{"time":"2026-05-01T17:01:45.442393908Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:01:45.51857663Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:01:45.518685867Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:01:45.584622044Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:01:45.584663415Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:01:45.58467917Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:01:45.584700199Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:01:45.584708683Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:01:50.599859149Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:01:50.632012805Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:01:50.632123123Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:01:50.653879985Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:01:50.653922244Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:01:50.653935713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:01:50.653964996Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:01:50.653973963Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:01:55.669270828Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:01:55.697738651Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:01:55.697832112Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:01:55.720760143Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:02:00.740183049Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:02:00.770367941Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:02:00.770469551Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:02:00.791293803Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:02:00.791347926Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:02:00.791362838Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:02:00.791422895Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:02:00.791433717Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:02:05.805227323Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:02:05.835678954Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:02:05.835781813Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:02:05.858298236Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:02:05.85834158Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:02:05.858355417Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:02:10.876753363Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:02:10.906067257Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:02:10.906150647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:02:10.930298118Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:02:10.930336024Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:02:10.930348917Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:02:10.930358818Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:02:10.930368844Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:02:15.944464697Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:02:15.976757176Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:02:15.976857204Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:02:15.999033326Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:02:15.999073408Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:02:15.999086081Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:02:15.999097076Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:02:15.99910734Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:02:21.014105498Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:02:21.045928276Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:02:21.046487091Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:02:21.069093724Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:02:21.069136579Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:02:21.06915056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:02:21.069171607Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:02:21.069180286Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:02:26.085642752Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:02:26.115916683Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:02:26.115996556Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:02:26.138119288Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:02:26.138162506Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:02:26.138175594Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:02:26.13818671Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:02:26.138196531Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:02:31.157134526Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:02:31.189117778Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:02:31.189218294Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:02:31.209284295Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:02:31.209340705Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:02:31.209357278Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:02:31.209368031Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:02:31.209376645Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:02:36.225702875Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:02:36.257213292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:02:36.257326452Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:02:36.277966056Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:02:36.278423248Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:02:36.278703049Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:02:36.279055293Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:02:36.279068684Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:02:41.297632239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:02:41.329117877Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:02:41.329222455Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:02:41.352905727Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:02:41.352947808Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:02:41.352962929Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:02:41.35297444Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:02:41.352984481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:02:46.367286185Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:02:46.396062897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:02:46.396169474Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:02:46.416597277Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:02:46.416651504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:02:46.416667044Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:02:46.416678123Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:02:46.416686668Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:02:51.432521327Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:02:51.4606682Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:02:51.460782102Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:02:51.482863783Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:02:51.482906687Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:02:51.482919289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:02:51.482929834Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:02:51.482939513Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:02:56.498285493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:02:56.526589698Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:02:56.526684192Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:02:56.547337584Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:02:56.547378594Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:02:56.547392199Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:02:56.547402813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:02:56.547411809Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:03:01.583070437Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:03:01.623494399Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:03:01.623604196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:03:01.649959361Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:03:01.65000374Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:03:01.650018096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:03:01.65002935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:03:01.650049893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:03:06.670679428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:03:06.700060874Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:03:06.700151915Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:03:06.720688225Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:03:06.72073609Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:03:06.720750395Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:03:06.720760086Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:03:06.720770069Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:03:15.241806439Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:03:15.317938507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:03:15.318041766Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:03:15.414029404Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:03:15.415319803Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:03:15.415345119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:03:15.415358569Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:03:15.415369833Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:03:20.437532128Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:03:20.468230657Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:03:20.468351679Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:03:20.493518168Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:03:20.493561217Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:03:20.493574342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:03:20.493585736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:03:20.493595053Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:03:25.512302566Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:03:25.541505409Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:03:25.541601328Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:03:25.570672194Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:03:25.570717206Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:03:25.570731523Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:03:25.570741086Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:03:25.570749133Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:03:30.589125572Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:03:30.618712611Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:03:30.618796523Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:03:30.642964607Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:03:30.643006756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:03:30.643020135Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:03:30.643031836Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:03:30.64304122Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:03:35.656230267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:03:35.685115555Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:03:35.68521597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:03:35.713539644Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:03:35.713593993Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:03:35.713610091Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:03:35.713620154Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:03:35.713628883Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:03:40.729406537Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:03:40.760550108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:03:40.760660769Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:03:40.784774253Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:03:40.784833829Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:03:40.784849545Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:03:40.784860072Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:03:40.784869138Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:03:45.798998314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:03:45.829859368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:03:45.829990274Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:03:45.850994249Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:03:45.851050663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:03:50.870491898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:03:50.900389363Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:03:50.900569491Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:03:50.923932999Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:03:50.923976077Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:03:50.923989213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:03:50.924000317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:03:50.924009657Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:03:55.939492944Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:03:55.967926934Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:03:55.968046826Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:03:55.988922257Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:03:55.988963704Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:03:55.988978066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:03:55.98899021Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:03:55.989000114Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:04:01.010461044Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:04:01.041728597Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:04:01.041818153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:04:01.063824856Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:04:01.063871933Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:04:01.063886206Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:04:01.063898026Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:04:01.063908401Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:04:06.080404838Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:04:06.109789513Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:04:06.109894656Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:04:06.133430605Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:04:06.133474812Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:04:06.133487829Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:04:06.133498713Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:04:06.133508668Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:04:11.152340128Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:04:11.182048436Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:04:11.182223165Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:04:11.202685761Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:04:11.20273993Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:04:11.202753251Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:04:11.202766142Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:04:11.202900508Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T17:04:11.202777309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:04:16.218484968Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:04:16.250433376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:04:16.250534364Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:04:16.272290053Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:04:16.272331747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:04:16.272345821Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:04:16.272375548Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:04:16.272385654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:04:21.289074665Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:04:21.321367744Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:04:21.321458913Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:04:21.343672911Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:04:21.343736524Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:04:21.343751451Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:04:21.343761612Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:04:21.343770003Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:04:26.359978801Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:04:26.388248056Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:04:26.388334061Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:04:26.411923424Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:04:26.411966582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:04:26.411980032Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:04:26.411991903Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:04:26.412004832Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:04:31.43499573Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:04:31.463524392Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:04:31.463622773Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:04:31.484199717Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:04:31.484260169Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:04:31.484274228Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:04:31.484285763Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:04:31.484294443Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:04:36.500145263Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:04:36.530398871Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:04:36.530518952Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:04:36.552858081Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:04:36.552923918Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:04:36.552938261Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:04:36.552948748Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:04:36.552957756Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:04:41.576138818Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:04:41.605698472Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:04:41.605793571Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:04:41.62966885Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:04:41.629710189Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:04:41.629724076Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:04:41.629734993Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:04:41.629743166Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:04:46.646583381Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:04:46.677098341Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:04:46.677177768Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:04:46.699916716Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:04:46.699957793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:04:46.699971509Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:04:46.700009912Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:04:46.700019081Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:04:51.717365815Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:04:51.746323597Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:04:51.746410951Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:04:51.766298289Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:04:51.766343376Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:04:51.76635704Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:04:56.783962633Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:04:56.812144133Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:04:56.812227905Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:04:56.836024203Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:04:56.836104043Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:04:56.836119656Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:04:56.836128564Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:04:56.836153712Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:05:01.862748701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:05:01.914571112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:05:01.914691626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:05:01.960332984Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:05:01.960378682Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:05:01.960393415Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:05:01.960404422Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:05:06.980029587Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:05:07.014523375Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:05:07.014644443Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:05:07.036007225Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:05:07.036052985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:05:07.03606712Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:05:07.036080486Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:05:07.036089791Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:05:12.055018789Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:05:12.083027731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:05:12.083136862Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:05:12.110498175Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:05:12.110539846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:05:12.110554516Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:05:12.110566028Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:05:12.110575634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:05:17.127165898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:05:17.157194437Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:05:17.157345289Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:05:17.18093999Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:05:17.18100053Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:05:17.181015683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:05:17.181027438Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:05:17.181036368Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:05:22.205678937Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:05:22.235658292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:05:22.2357811Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:05:22.259036864Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:05:22.259086245Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:05:22.259101326Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:05:27.275385308Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:05:27.306116243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:05:27.30620298Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:05:27.327478108Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:05:27.327521525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:05:27.327534241Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:05:27.327545426Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:05:27.327554974Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:05:32.343281902Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:05:32.374343579Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:05:32.374473039Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:05:32.398186522Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:05:32.39823119Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:05:32.398260027Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:05:32.398270876Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:05:32.39827937Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:05:37.412985823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:05:37.444066604Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:05:37.444161735Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:05:37.467349369Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:05:37.46739137Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:05:37.467405459Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:05:37.467415266Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:05:37.467423141Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:05:42.488296762Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:05:42.518006033Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:05:42.518093865Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:05:42.539082404Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:05:42.539125638Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:05:42.539139169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:05:42.539170482Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:05:42.539180442Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:05:47.555908062Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:05:47.58714187Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:05:47.587228152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:05:47.607842709Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:05:47.607894147Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:05:47.607910393Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:05:47.607922584Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:05:47.607931484Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:05:52.627112439Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:05:52.655928692Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:05:52.656033838Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:05:52.679655726Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:05:52.679708307Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:05:52.679722947Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:05:52.679733548Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:05:52.679742123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:05:57.69527256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:05:57.724977589Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:05:57.725067164Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:05:57.748297316Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:05:57.748340806Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:05:57.748354565Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:06:02.768653533Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:06:02.848770192Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:06:02.848877615Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:06:02.879124228Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:06:02.879172466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:06:02.879186612Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:06:02.879197785Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:06:02.879208126Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:06:07.89727262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:06:07.92516937Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:06:07.925282533Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:06:07.949503523Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:06:07.949564285Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:06:07.949579007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:06:07.949588897Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:06:07.949597702Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:06:12.970741993Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:06:13.001039522Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:06:13.001169267Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:06:13.027228317Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:06:13.02729366Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:06:13.02730752Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:06:13.027318628Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:06:13.027329505Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:06:18.046265707Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:06:18.072654049Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:06:18.072747634Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:06:18.094442532Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:06:18.094485418Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:06:18.094513268Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:06:18.094524658Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:06:18.094533698Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:06:23.11212206Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:06:23.142810199Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:06:23.14290915Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:06:23.168962414Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:06:23.169005085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:06:23.169019342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:06:23.169031696Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:06:23.169040477Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:06:28.183625347Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:06:28.211719926Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:06:28.211829966Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:06:28.234277248Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:06:28.23433995Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:06:28.234354795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:06:28.234363815Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:06:28.234371895Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:06:33.254090558Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:06:33.285323053Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:06:33.285407097Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:06:33.310888312Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:06:33.310928943Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:06:33.310942779Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:06:33.310953729Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:06:33.310962939Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:06:38.326678642Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:06:38.357527209Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:06:38.357672608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:06:38.378535034Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:06:43.401610328Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:06:43.432951505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:06:43.433119614Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:06:43.45506953Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:06:43.455115526Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:06:43.45513009Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:06:43.45514093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:06:43.455150951Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:06:48.476286551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:06:48.505793993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:06:48.505876636Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:06:48.52703808Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:06:48.527092566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:06:48.527108528Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:06:48.527118935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:06:48.527127298Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:06:53.548102783Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:06:53.576320157Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:06:53.576559548Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:06:53.5977799Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:06:53.597821953Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:06:53.597853669Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:06:53.597896432Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:06:53.597923017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:06:58.614936945Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:06:58.6433725Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:06:58.643464979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:06:58.667470632Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:06:58.667513489Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:07:03.687778296Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:07:03.717595565Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:07:03.717685344Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:07:03.743436258Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:07:03.743482006Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:07:03.743495537Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:07:03.74350731Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:07:03.7435182Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:07:08.760279263Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:07:08.790167524Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:07:08.790307251Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:07:08.814657308Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:07:08.814700583Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:07:08.814714759Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:07:08.814724224Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:07:08.814732931Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:07:13.833863119Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:07:13.864637767Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:07:13.864741394Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:07:13.888479442Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:07:13.888551541Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:07:13.888566911Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:07:13.888576353Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:07:13.888585581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:07:18.905480895Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:07:18.937798951Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:07:18.937896675Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:07:18.962176266Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:07:18.962217918Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:07:18.962243894Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:07:18.962255079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:07:18.962263841Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:07:23.983106235Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:07:24.014344978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:07:24.014432912Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:07:24.037167509Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:07:24.037212336Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:07:24.03722692Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:07:24.037249048Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:07:24.037259384Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:07:29.054276518Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:07:29.085819756Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:07:29.085934319Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:07:29.109656635Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:07:29.109708511Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:07:29.109721577Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:07:29.109732852Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:07:29.109740832Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:07:34.127990463Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:07:34.16326935Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:07:34.163351979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:07:34.189780741Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:07:34.189825508Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:07:34.189838317Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:07:34.189848033Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:07:34.189856041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:07:39.2102328Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:07:39.239261292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:07:39.239349679Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:07:39.261210342Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:07:39.261267065Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:07:39.261283294Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:07:39.261293911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:07:39.261302342Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:08:57.087066142Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:08:57.198764437Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:08:57.199058004Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:08:57.254326785Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:08:57.254365965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:08:57.254380185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:08:57.2543907Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:08:57.254399111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:09:02.276436987Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:09:02.31130813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:09:02.311428056Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:09:02.337000392Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:09:02.33704271Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:09:02.337057007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:09:02.337068296Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:09:02.33707712Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:09:07.354928258Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:09:07.385613262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:09:07.385741711Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:09:07.408153167Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:09:07.408199625Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:09:07.40821416Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:09:07.408274331Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:09:07.408284754Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:09:12.427909213Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:09:12.458425199Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:09:12.458512218Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:09:12.480805186Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:09:12.48084674Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:09:12.480860568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:09:12.480887705Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:09:12.480896624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:09:17.496676764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:09:17.526574267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:09:17.526682397Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:09:17.550885964Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:09:17.550931577Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:09:17.550945102Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:09:17.550955548Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:09:17.550966155Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:09:22.570682737Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:09:22.602073836Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:09:22.602171504Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:09:22.62633251Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:09:22.626376604Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:09:22.626391417Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:09:22.626400531Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:09:22.626409554Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:09:27.64403385Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:09:27.675273292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:09:27.675358453Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:09:27.696933341Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:09:27.696988517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:09:27.69703541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:09:27.697046354Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:09:27.697055029Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:09:32.720769082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:09:32.748606229Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:09:32.748701671Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:09:32.770683274Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:09:32.770724866Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:09:32.770738305Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:09:32.770750748Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:09:32.770760419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:09:37.78616297Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:09:37.815821457Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:09:37.815907724Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:09:37.843609961Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:09:37.843650924Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:09:37.843663747Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:09:37.843674496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:09:37.843683635Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:09:42.858475219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:09:42.889516697Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:09:42.889588427Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:09:42.91335209Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:09:42.913393304Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:09:42.913408039Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:09:47.930128179Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:09:47.961650926Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:09:47.961752461Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:09:47.985378142Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:09:47.985422442Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:09:47.985436754Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:09:47.985444894Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:09:47.985451845Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:09:53.001954693Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:09:53.032262332Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:09:53.032375461Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:09:53.05534462Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:09:53.055388399Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:09:53.055402468Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:09:53.055413861Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:09:58.072726161Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:09:58.10251187Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:09:58.102595282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:09:58.128918297Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:09:58.128967036Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:09:58.128982492Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:09:58.128992575Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:09:58.128999889Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:10:03.143029522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:10:03.176263465Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:10:03.176359295Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:10:03.200860203Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:10:03.200923647Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:10:03.200939517Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:10:03.200948667Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:10:03.200957002Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:10:08.224178926Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:10:08.255204149Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:10:08.255338241Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:10:08.280744616Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:10:08.280788133Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:10:08.280801953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:10:08.280821785Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:10:08.280830526Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:10:13.297300663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:10:13.327883656Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:10:13.327989931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:10:13.349288664Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:10:13.349344794Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:10:13.349359337Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:10:13.34936825Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:10:13.349376491Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:10:18.368857055Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:10:18.399471635Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:10:18.399559437Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:10:18.423838041Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:10:18.423876432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:10:18.423890546Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:10:18.42390152Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:10:23.4412628Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:10:23.467706317Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:10:23.467812219Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:10:23.491674506Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:10:23.491730182Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:10:23.491745523Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:10:23.491757268Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:10:23.491765735Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:10:28.507220413Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:10:28.53469875Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:10:28.535097966Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:10:28.557508984Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:10:28.557548516Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:10:28.557561712Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:10:28.557571827Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:10:28.557580345Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:10:33.579013865Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:10:33.609892357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:10:33.609971987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:10:33.631307742Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:10:33.631355911Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:10:33.631371325Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:10:33.631382131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:10:33.631391069Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:10:38.645869108Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:10:38.67576855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:10:38.675857916Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:10:38.697306587Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:10:38.697347109Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:10:38.697361948Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:10:38.697371904Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:10:38.697381778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:10:43.71563536Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:10:43.745990661Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:10:43.746105264Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:10:43.768260972Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:10:43.768303326Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:10:43.768317668Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:10:48.787227063Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:10:48.817091893Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:10:48.81720385Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:10:48.841418388Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:10:48.841463005Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:10:48.841477721Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:10:48.841488501Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:10:48.841495535Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:10:53.858373106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:10:53.889299487Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:10:53.88939997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:10:53.912756427Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:10:53.912799627Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:10:53.91281222Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:10:53.912824779Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:10:53.912834646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:10:58.932128541Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:10:58.962907002Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:10:58.963003957Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:10:58.988750148Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:10:58.988793529Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:10:58.988807717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:10:58.988828545Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:10:58.988837Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:11:04.011286661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:11:04.041875762Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:11:04.041967371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:11:04.066008059Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:11:04.066049649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:11:04.066062354Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:11:04.066104343Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:11:04.06611344Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:11:09.082935228Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:11:09.112178435Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:11:09.112279573Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:11:09.136258429Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:11:09.136299413Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:11:09.136313931Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:11:09.136343193Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:11:09.136352558Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:11:14.156193922Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:11:14.186218745Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:11:14.186316887Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:11:14.210448162Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:11:14.210490017Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:11:14.210504328Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:11:14.210515826Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:11:14.210525132Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:11:19.227470287Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:11:19.259087082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:11:19.259214774Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:11:19.284384463Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:11:19.284565372Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:11:19.284582556Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:11:19.28459304Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:11:19.284602095Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:11:24.300022425Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:11:24.33190687Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:11:24.332534607Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:11:24.353052281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:11:24.353098199Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:11:24.353112195Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:11:24.353124697Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:11:24.3531338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:11:29.372271211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:11:29.400584647Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:11:29.400671366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:11:29.42494149Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:11:29.4249836Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:11:29.424996802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:11:29.425007699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:11:29.425016305Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:11:34.446768907Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:11:34.484379203Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:11:34.485369469Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:11:34.515306456Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:11:34.515370831Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:11:34.515384812Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:11:34.515395069Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:11:34.515403611Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:11:39.532546462Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:11:39.563494923Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:11:39.563586827Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:11:39.587379824Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:11:39.587421378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:11:39.587435638Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:11:39.587446046Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:11:39.587454486Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:11:44.602823434Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:11:44.633939701Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:11:44.634056245Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:11:44.658300201Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:11:44.658345282Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:11:44.658358674Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:11:44.658369848Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:11:44.658379128Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:11:49.672975Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:11:49.702173765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:11:49.702302023Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:11:49.727080028Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:11:49.727126416Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:11:49.727142859Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:11:49.727154116Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:11:49.727160992Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:11:54.743512321Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:11:54.77441595Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:11:54.774510465Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:11:54.796116532Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:11:54.796158527Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:11:54.796171471Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:11:54.796182724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:11:54.796191924Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:11:59.813357379Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:11:59.849125938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:11:59.849230218Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:11:59.872565318Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:11:59.872605029Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:11:59.872634047Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:11:59.872643867Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:11:59.87265244Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:12:04.889280305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:12:04.920210359Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:12:04.920322229Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:12:04.940802176Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:12:04.940858433Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:12:04.94087345Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:12:04.940934043Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:12:04.940945223Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:12:09.957185728Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:12:09.98802616Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:12:09.988136881Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:12:10.017196676Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:12:10.017249346Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:12:10.017264437Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:12:10.01727389Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:12:10.017283413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:12:15.034622917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:12:15.065809307Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:12:15.065898018Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:12:15.090893344Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:12:15.090948354Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:12:15.090963338Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:12:15.090972523Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:12:15.090980525Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:12:20.106989007Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:12:20.131447798Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:12:20.131566489Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:12:20.155160246Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:12:20.155200537Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:12:20.155214295Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:12:20.155224834Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:12:20.155251644Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:12:25.170894687Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:12:25.202368383Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:12:25.202469401Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:12:25.224083509Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:12:25.224132222Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:12:25.224147028Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:12:25.224156722Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:12:25.224167269Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:12:30.240681154Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:12:30.271164156Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:12:30.271284244Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:12:30.291562406Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:12:30.291605355Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:12:30.291618738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:12:30.291628681Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:12:30.291638667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:12:35.304832793Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:12:35.337481244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:12:35.337575271Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:12:35.363137184Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:12:35.363180576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:12:35.363195354Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:12:35.363206581Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:12:35.363216776Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:12:40.378380313Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:12:40.408947435Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:12:40.409032923Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:12:40.428931396Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:12:40.428972254Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:12:40.428997968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:12:40.429008507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:12:40.429017468Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:12:45.450183565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:12:45.479730831Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:12:45.479810482Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:12:45.500081842Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:12:45.500123995Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:12:45.500137234Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:12:45.500147984Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:12:45.500157441Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:12:50.518760908Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:12:50.550040348Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:12:50.550124286Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:12:50.570511331Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:12:50.570909375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:12:50.571141806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:12:50.571158727Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:12:50.571170945Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:12:55.591853057Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:12:55.620593407Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:12:55.620685452Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:12:55.640349321Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:12:55.640398778Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:12:55.640412725Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:12:55.640423531Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:12:55.640700763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:13:00.66049115Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:13:00.691042016Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:13:00.691133627Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:13:00.713083292Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:13:00.713127076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:13:00.713140613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:13:00.713168263Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:13:00.713177284Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:13:05.727534848Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:13:05.760073083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:13:05.760159749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:13:05.783937334Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:13:05.783980602Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:13:05.783994398Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:13:05.784004858Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:13:05.784013253Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:13:10.803140723Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:13:10.834382186Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:13:10.834479598Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:13:10.854696631Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:13:10.854738682Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:13:10.85475234Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:13:10.854763787Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:13:10.854772733Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:13:15.866742861Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:13:15.894758948Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:13:15.894843953Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:13:15.918350978Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:13:15.918392822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:13:15.918406682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:13:15.918417461Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:13:15.918427043Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:13:20.938365237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:13:20.968108886Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:13:20.9682113Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:13:20.993820833Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:13:20.993864179Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:13:20.993878175Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:13:20.993888482Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:13:20.993898137Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:13:26.008072127Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:13:26.041365766Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:13:26.041456179Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:13:26.063519279Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:13:26.063574806Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:13:26.063588998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:13:26.063598039Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:13:26.063607185Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:13:31.083072659Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:13:31.114544271Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:13:31.11466303Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:13:31.139134845Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:13:31.139183676Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:13:31.139199245Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:13:31.139210496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:13:31.139220672Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:13:36.154929794Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:13:36.18354942Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:13:36.183658433Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:13:36.20753792Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:13:36.207578018Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:13:36.207591468Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:13:36.207602704Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:13:36.207612126Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:13:41.222444958Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:13:41.253438324Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:13:41.253544093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:13:41.282797692Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:13:41.282842618Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:13:41.282856798Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:13:41.282868023Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:13:41.282876919Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:13:46.298230562Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:13:46.328327093Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:13:46.328416102Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:13:46.350345657Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:13:46.350401797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:13:46.350428854Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:13:46.350437911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:13:46.350446687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:13:51.368351921Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:13:51.399382758Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:13:51.399484374Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:13:51.421264422Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:13:51.421318494Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:13:51.421334443Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:13:51.421344569Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:13:51.421353515Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:13:56.440568185Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:13:56.470627042Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:13:56.470730416Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:13:56.494023698Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:13:56.494066347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:13:56.494079523Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:13:56.494091481Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:13:56.494101366Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:14:01.527676257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:14:01.579026069Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:14:01.579166182Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:14:01.631299945Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:14:01.631378358Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:14:01.631394016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:14:01.631405034Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:14:01.6314137Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:14:06.646919353Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:14:06.677781899Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:14:06.677892098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:14:06.701759973Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:14:06.701801335Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:14:06.701830574Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:14:06.701841114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:14:06.701849007Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:14:11.720311283Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:14:11.749659481Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:14:11.749767232Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:14:11.77364157Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:14:11.773686333Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:14:11.77370115Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:14:11.773710529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:14:11.773720081Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:14:16.792113334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:14:16.822999633Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:14:16.823116233Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:14:16.846458004Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:14:16.846505185Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:14:16.846521482Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:14:16.846533692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:14:16.846543528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:14:21.86700651Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:14:21.895828336Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:14:21.895916893Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:14:21.917002116Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:14:21.917043251Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:14:21.917056514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:14:21.917077268Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:14:21.917086046Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:14:26.93209066Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:14:26.960410022Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:14:26.960607794Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:14:26.984365632Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:14:26.984421575Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:14:26.98454786Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:14:26.984558868Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:14:26.98456766Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:14:32.000161283Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:14:32.030805608Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:14:32.0309137Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:14:32.055049901Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:14:32.055097279Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:14:32.055113168Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:14:32.055123987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:14:32.055131937Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:14:37.071538726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:14:37.102345898Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:14:37.102463036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:14:37.123592332Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:14:37.123633552Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:14:42.141007818Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:14:42.170854892Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:14:42.171020224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:14:42.197002029Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:14:42.19704865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:14:42.197061772Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:14:42.19708377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:14:42.197093986Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:14:47.216724359Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:14:47.246658839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:14:47.246752955Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:14:47.270534815Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:14:47.270577246Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:14:47.270591041Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:14:47.270601861Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:14:47.270611667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:14:52.293320409Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:14:52.324969933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:14:52.325097192Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:14:52.349341222Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:14:52.349384678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:14:52.349398136Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:14:52.349409143Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:14:52.349417449Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:14:57.363141179Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:14:57.394544162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:14:57.394643222Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:14:57.418131713Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:14:57.418179146Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:14:57.418193309Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:14:57.418204463Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:14:57.418215239Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:15:02.436563281Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:15:02.470443091Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:15:02.470560011Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:15:02.496751802Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:15:02.497147748Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:15:02.497171123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:15:02.497184912Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:15:02.497196379Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:15:07.512281247Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:15:07.549016945Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:15:07.549111235Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:15:07.575182722Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:15:07.575292274Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:15:07.575310495Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:15:07.575320064Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:15:07.575328778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:15:12.590350772Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:15:12.62054042Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:15:12.621101722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:15:12.641653424Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:15:12.641703519Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:15:12.641717371Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:15:12.64175623Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:15:12.641779152Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:15:17.657070259Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:15:17.685818695Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:15:17.685918557Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:15:17.711294243Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:15:17.711335848Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:15:17.711349295Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:15:17.711359522Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:15:17.711368652Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:15:22.727308565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:15:22.759775143Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:15:22.759875145Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:15:22.782791537Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:15:22.782841545Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:15:22.782856647Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:15:22.782866522Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:15:22.782874535Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:15:27.797590082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:15:27.826672149Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:15:27.826782293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:15:27.849012998Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:15:27.849057826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:15:27.849081201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:15:27.849092624Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:15:27.849102018Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:15:32.867332565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:15:32.89694252Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:15:32.897050566Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:15:32.920385416Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:15:32.920519544Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:15:32.920536855Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:15:32.920548984Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:15:32.920559199Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:15:37.938617351Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:15:37.966254733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:15:37.966365Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:15:37.986693518Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:15:37.986734825Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:15:37.98674819Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:15:37.986758969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:15:37.986768818Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:15:43.008212642Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:15:43.041096564Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:15:43.041183359Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:15:43.067829948Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:15:43.067871976Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:15:43.067886679Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:15:43.067922472Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:15:43.067931541Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:15:48.08266927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:15:48.112981532Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:15:48.113086853Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:15:48.137363725Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:15:48.137404084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:15:48.137417443Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:15:48.137428227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:15:48.137439028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:15:53.155363857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:15:53.189551435Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:15:53.189655612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:15:53.212405861Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:15:53.212581472Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:15:53.212598566Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:15:53.212609433Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:15:53.212618563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:15:58.228440842Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:15:58.263031713Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:15:58.263145612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:15:58.287984531Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:15:58.288026991Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:15:58.28803993Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:15:58.288050334Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:15:58.288060837Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:16:03.304155089Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:16:03.336808441Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:16:03.336944158Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:16:03.365469192Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:16:03.365517584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:16:03.365533734Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:16:03.365545591Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:16:08.385713303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:16:08.421318535Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:16:08.421425304Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:16:08.444115085Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:16:08.444167926Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:16:08.444182849Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:16:08.444193269Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:16:08.444202227Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:16:13.464603858Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:16:13.495130066Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:16:13.495216641Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:16:13.52033447Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:16:13.520375677Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:16:13.520405844Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:16:13.520415209Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:16:13.520500027Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:16:18.535028811Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:16:18.564641402Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:16:18.564737782Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:16:18.587517324Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:16:18.587563062Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:16:18.587576082Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:16:18.587586872Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:16:18.587596575Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:16:23.604169479Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:16:23.633595762Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:16:23.633702753Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:16:23.658912591Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:16:23.658951884Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:16:23.658966121Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:16:23.658996687Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:16:23.659005764Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:16:28.676576388Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:16:28.705527315Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:16:28.705646374Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:16:28.727170322Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:16:28.727214951Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:16:28.7272294Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:16:28.727252072Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:16:28.727260653Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:16:33.747618846Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:16:33.777541469Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:16:33.777745491Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:16:33.801188623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:16:33.801231919Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:16:33.801281529Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:16:33.801308274Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:16:33.801318865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:16:38.81716952Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:16:38.847697026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:16:38.847797334Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:16:38.871226524Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:16:38.87129312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:16:38.871307386Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:16:38.871316934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:16:38.871325665Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:16:43.892401649Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:16:43.923524733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:16:43.923634131Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:16:43.950625454Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:16:43.950666343Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:16:43.950679603Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:16:43.950702533Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:16:43.950711339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:16:48.968458645Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:16:48.998743939Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:16:48.998829928Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:16:49.023264145Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:16:49.023308649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:16:49.023322421Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:16:49.023334762Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:16:49.023344393Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:16:54.040393388Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:16:54.071890092Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:16:54.071991037Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:16:54.095794229Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:16:54.095840866Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:16:54.095853957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:16:54.095884144Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:16:54.095894102Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:16:59.127865663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:16:59.157174224Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:16:59.157381952Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:16:59.181382509Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:16:59.181426982Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:16:59.181440604Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:16:59.181450558Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:16:59.181460268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:17:04.199450247Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:17:04.231867413Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:17:04.231975007Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:17:04.25232224Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:17:04.252366419Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:17:04.252381406Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:17:04.252392616Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:17:09.270327938Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:17:09.300559944Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:17:09.30067527Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:17:09.323786907Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:17:09.323845889Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:17:09.323862346Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:17:09.323872838Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:17:09.323881209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:17:14.340033345Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:17:14.371549567Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:17:14.371695621Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:17:14.398599964Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:17:14.398676336Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:17:14.398691255Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:17:14.39870199Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:17:14.398710963Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:17:19.413211817Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:17:19.441906504Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:17:19.442006383Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:17:19.46663957Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:17:19.466694537Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:17:19.466709344Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:17:19.466718577Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:17:19.466726779Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:17:24.490547693Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:17:24.518526859Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:17:24.518629682Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:17:24.544027178Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:17:24.544066785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:17:24.544080999Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:17:29.56327848Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:17:29.59068885Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:17:29.590808022Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:17:29.613496617Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:17:29.613541182Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:17:29.613554465Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:17:34.631173587Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:17:34.661004474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:17:34.661120411Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:17:34.688025142Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:17:34.688065771Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:17:34.688078606Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:17:39.703133293Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:17:39.733808487Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:17:39.733902867Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:17:39.758057368Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:17:39.758099266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:17:39.758112743Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:17:39.758124861Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:17:39.758134004Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:17:44.773762798Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:17:44.80371296Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:17:44.803819276Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:17:44.827693345Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:17:44.827750139Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:17:44.827764291Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:17:44.827775097Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:17:44.827784827Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:17:49.843434975Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:17:49.873534814Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:17:49.873652234Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:17:49.898500239Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:17:49.898557409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:17:49.898572618Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:17:49.898626057Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:17:49.898636833Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:17:54.919033395Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:17:54.947967758Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:17:54.94806519Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:17:54.971144613Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:17:54.971187345Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:17:54.971201818Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:17:54.971212191Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:17:54.971221005Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:17:59.988800773Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:18:00.042695505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:18:00.042896007Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:18:00.088576368Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:18:00.088624584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:18:00.088648816Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:18:00.088660239Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:18:00.088670594Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:18:05.109364062Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:18:05.140260918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:18:05.140391296Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:18:05.163197266Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:18:05.16326881Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:18:05.163283263Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:18:05.163292952Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:18:05.163301374Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:18:10.181288437Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:18:10.210729476Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:18:10.210845994Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:18:10.235019961Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:18:10.235062745Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:18:10.235075921Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:18:10.235086728Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:18:10.235095813Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:18:15.252563761Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:18:15.281846788Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:18:15.281979515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:18:15.301434484Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:18:15.301476563Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:18:15.301508277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:18:15.301518198Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:18:15.301526587Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:18:20.316990637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:18:20.346488686Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:18:20.346571531Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:18:20.368149719Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:18:20.368191355Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:18:20.368224893Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:18:20.368248577Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:18:20.368258019Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:18:25.386147376Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:18:25.417770974Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:18:25.417852934Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:18:25.441270778Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:18:25.441325031Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:18:25.441341545Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:18:25.4413521Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:18:25.441360258Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:18:30.457565697Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:18:30.487311416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:18:30.487443349Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:18:30.511543211Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:18:30.511589129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:18:30.511604845Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:18:30.511615648Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:18:30.511625722Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:18:35.525880405Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:18:35.557009127Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:18:35.557109432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:18:35.581603189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:18:35.581645996Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:18:35.581659676Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:18:35.581670624Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:18:35.581680681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:18:40.599201132Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:18:40.628684065Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:18:40.628759153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:18:40.649777859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:18:40.649821209Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:18:40.649834747Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:18:40.649856605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:18:40.649865367Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:18:45.669077075Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:18:45.700123294Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:18:45.700315932Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:18:45.721661211Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:18:45.721703409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:18:45.721717545Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:18:45.721728456Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:18:45.721737248Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:18:50.741322948Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:18:50.770424194Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:18:50.770533091Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:18:50.793580592Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:18:50.79362171Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:18:50.793635737Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:18:50.793647173Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:18:50.793656083Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:18:55.812963598Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:18:55.844359732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:18:55.844578883Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:18:55.872330874Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:18:55.872369685Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:18:55.872383219Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:18:55.87239386Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:18:55.872402013Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:19:00.893920945Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:19:00.922679669Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:19:00.922766248Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:19:00.945773517Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:19:00.945819822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:19:00.945834131Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:19:00.94584478Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:19:00.945854703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:19:05.961117903Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:19:05.989796759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:19:05.989898488Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:19:06.01443502Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:19:06.014482081Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:19:06.014496435Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:19:06.014506451Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:19:06.014513456Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:19:11.033523863Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:19:11.06531856Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:19:11.06543105Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:19:11.089752505Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:19:11.089807169Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:19:11.089821489Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:19:11.089831838Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:19:11.089840006Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:19:16.107292465Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:19:16.137364791Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:19:16.137450636Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:19:16.160116078Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:19:16.160153255Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:19:16.160166725Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:19:16.160176938Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:19:16.16018695Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:19:21.181343216Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:19:21.210528635Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:19:21.210635905Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:19:21.23486543Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:19:21.234907851Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:19:21.234921337Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:19:21.234932638Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:19:21.234942419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:19:26.250520538Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:19:26.278029706Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:19:26.278166656Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:19:26.30153438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:19:26.301575433Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:19:26.301588711Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:19:26.301599565Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:19:26.301609091Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:19:31.321470845Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:19:31.353802783Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:19:31.353895029Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:19:31.378254349Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:19:31.378297463Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:19:31.378311627Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:19:36.391635339Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:19:36.423690277Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:19:36.423794705Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:19:36.449075068Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:19:36.449117378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:19:36.44913094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:19:36.449140588Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:19:36.449148928Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:19:41.464039958Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:19:41.492857083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:19:41.49293859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:19:41.515158669Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:19:41.515201429Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:19:41.515215806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:19:41.515248275Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:19:41.515257183Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:19:46.53762831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:19:46.569179054Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:19:46.569302897Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:19:46.590018023Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:19:46.590060555Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:19:46.590113475Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:19:46.590124997Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:19:46.590133015Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:19:51.611997036Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:19:51.641565194Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:19:51.641705608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:19:51.665601781Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:19:51.665645419Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:19:51.665659068Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:19:51.665670576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:19:51.66567991Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:19:56.680136487Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:19:56.710787849Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:19:56.710896223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:19:56.731652514Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:19:56.731710112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:19:56.731729526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:19:56.731739801Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:19:56.731747893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:20:01.774226098Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:20:01.91227001Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:20:01.912366426Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:20:02.027651207Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:20:02.03263985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:20:02.032695473Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:20:02.032708022Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:20:02.032716802Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:20:07.06418745Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:20:07.096685131Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:20:07.096776592Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:20:07.12512925Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:20:07.125180939Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:20:07.125196341Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:20:07.125204834Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:20:07.125211756Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:20:12.141091Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:20:12.170722714Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:20:12.170840665Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:20:12.193910045Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:20:12.193957092Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:20:12.193970282Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:20:12.193979664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:20:12.193989589Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:20:17.212850725Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:20:17.246637682Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:20:17.246737532Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:20:17.27236048Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:20:17.272402823Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:20:17.272424926Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:20:17.272505634Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:20:17.272517021Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:20:22.293748303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:20:22.324711159Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:20:22.324817594Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:20:22.344414863Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:20:22.344588659Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:20:22.344606167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:20:22.344615841Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:20:22.344624193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:20:27.359340105Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:20:27.38980057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:20:27.389932815Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:20:27.41570304Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:20:27.415743238Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:20:27.415758066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:20:27.415769078Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:20:27.415779165Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:20:32.433561262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:20:32.462671775Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:20:32.462781403Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:20:32.486286895Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:20:32.486327098Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:20:32.486356814Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:20:32.486367444Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:20:32.486375502Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:20:37.501476149Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:20:37.531330314Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:20:37.531458669Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:20:37.554894322Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:20:37.554935259Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:20:37.554949235Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:20:37.554960293Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:20:37.554971036Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:20:42.573451789Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:20:42.604230957Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:20:42.604331713Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:20:42.626098644Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:20:42.626141767Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:20:42.626155419Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:20:42.626165484Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:20:47.642697584Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:20:47.672390768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:20:47.672598215Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:20:47.697000156Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:20:47.697043152Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:20:47.697056222Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:20:47.697069632Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:20:47.697078847Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:20:52.715967931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:20:52.748713907Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:20:52.748824635Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:20:52.773915256Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:20:52.773957489Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:20:52.773991741Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:20:52.774002755Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:20:52.774010894Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:20:57.790281646Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:20:57.818857485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:20:57.818943353Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:20:57.846483998Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:20:57.846536313Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:20:57.846552209Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:20:57.846561626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:20:57.846568581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:21:02.86534113Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:21:02.894614851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:21:02.894729666Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:21:02.91628728Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:21:02.91634156Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:21:02.916356181Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:21:02.916366928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:21:02.916374203Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:21:07.93075587Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:21:07.96087734Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:21:07.960991658Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:21:07.983910076Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:21:07.983956543Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:21:07.983970239Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:21:07.983981173Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:21:07.983990302Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:21:12.999951358Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:21:13.032263468Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:21:13.032378193Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:21:13.058582061Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:21:13.058642032Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:21:13.058657027Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:21:13.058667114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:21:13.058676292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:21:18.073034789Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:21:18.103016014Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:21:18.103092835Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:21:18.126358866Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:21:18.126405491Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:21:18.126421306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:21:18.126431327Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:21:18.126438271Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:21:23.142804503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:21:23.173569795Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:21:23.173707084Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:21:23.199126672Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:21:23.199184125Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:21:23.199198942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:21:23.199208773Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:21:23.199217009Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:21:28.213547527Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:21:28.243348041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:21:28.24343457Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:21:28.269466709Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:21:28.269512084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:21:28.269527053Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:21:28.26953963Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:21:28.269548243Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:21:33.29054189Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:21:33.320405308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:21:33.320630806Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:21:33.344098433Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:21:33.344142965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:21:33.344157099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:21:33.344185827Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:21:33.344195363Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:21:38.360189163Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:21:38.390667734Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:21:38.390766985Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:21:38.412554061Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:21:38.412609919Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:21:38.412625889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:21:38.412636095Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:21:38.412646023Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:21:43.432694663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:21:43.461412707Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:21:43.461505621Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:21:43.481653946Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:21:43.481712796Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:21:43.481726932Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:21:43.481736885Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:21:43.481745586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:21:48.499140859Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:21:48.529132532Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:21:48.529272975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:21:48.550019411Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:21:48.550059938Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:21:48.55007435Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:21:48.550084329Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:21:48.550092278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:21:53.565288929Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:21:53.595537487Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:21:53.595652146Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:21:53.618372307Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:21:53.618413885Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:21:53.618447646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:21:53.618458229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:21:53.618466581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:21:58.637162276Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:21:58.665766108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:21:58.665847487Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:21:58.693264778Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:21:58.693323258Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:21:58.693337886Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:21:58.693348165Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:21:58.693356374Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:22:03.71288204Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:22:03.741741502Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:22:03.741850718Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:22:03.764935068Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:22:03.764980906Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:22:03.764996457Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:22:03.765008208Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:22:03.765016999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:22:08.781863119Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:22:08.813019939Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:22:08.81310922Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:22:08.834998547Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:22:08.835038964Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:22:08.835069795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:22:08.835080828Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:22:08.83508865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:22:13.853010424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:22:13.882958254Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:22:13.883068554Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:22:13.907078648Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:22:13.907123524Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:22:13.907137547Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:22:13.907174987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:22:13.90718362Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:22:18.921786627Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:22:18.950524342Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:22:18.950606719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:22:18.973790185Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:22:18.973848269Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:22:18.973863277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:22:18.97387512Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:22:18.973884354Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:22:23.991206497Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:22:24.022811131Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:22:24.022941256Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:22:24.047825135Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:22:24.047869713Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:22:24.047885602Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:22:24.047897875Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:22:24.047908378Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:22:29.065072519Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:22:29.093420522Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:22:29.093517516Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:22:29.116670367Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:22:29.116712907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:22:29.116726506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:22:29.116737975Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:22:29.116746539Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:22:34.138818534Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:22:34.169463598Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:22:34.169570498Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:22:34.191195851Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:22:34.191252066Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:22:34.191266163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:22:34.191276025Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:22:34.19128409Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:22:39.205536925Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:22:39.236388695Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:22:39.236603835Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:22:39.260039688Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:22:39.260080077Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:22:39.260092953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:22:39.260127463Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:22:39.260136034Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:22:44.278746614Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:22:44.309324049Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:22:44.309441639Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:22:44.333146115Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:22:44.333201391Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:22:44.333215607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:22:44.333225856Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:22:44.333248051Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:22:49.352274887Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:22:49.380145091Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:22:49.380264961Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:22:49.406425753Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:22:49.406868661Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:22:49.407055488Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:22:49.407203389Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:22:49.40737264Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:22:54.422781204Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:22:54.451725406Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:22:54.451842894Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:22:54.473950431Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:22:54.473991105Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:22:54.474004285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:22:54.474015418Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:22:54.474025212Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:22:59.491907301Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:22:59.522166993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:22:59.522275004Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:22:59.543827508Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:22:59.543905113Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:22:59.543930729Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:22:59.543941226Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:22:59.543949374Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:23:04.56393324Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:23:04.59559954Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:23:04.595704253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:23:04.615987941Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:23:04.616031392Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:23:04.616044254Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:23:04.616054181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:23:04.616063331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:23:09.633774692Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:23:09.662050923Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:23:09.662153302Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:23:09.684936646Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:23:09.684980393Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:23:09.68499417Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:23:09.685003508Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:23:09.685011939Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:23:14.703049352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:23:14.733331778Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:23:14.733406328Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:23:14.757713155Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:23:14.757755379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:23:14.757769188Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:23:14.757779912Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:23:14.757788891Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:23:19.776340929Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:23:19.805095878Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:23:19.805201435Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:23:19.826123101Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:23:19.826177373Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:23:19.826193192Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:23:19.826203674Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:23:19.826213504Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:23:24.842295876Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:23:24.87173141Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:23:24.871807599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:23:24.895818938Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:23:24.89587883Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:23:24.895893833Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:23:24.895902584Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:23:24.895910558Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:23:29.912780199Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:23:29.941262401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:23:29.941360192Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:23:29.963745207Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:23:29.963789784Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:23:29.963803877Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:23:29.96381424Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:23:29.963823181Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:23:34.980150983Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:23:35.006429331Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:23:35.006542731Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:23:35.028552812Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:23:35.028596292Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:23:35.028610692Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:23:35.028621716Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:23:35.02863129Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:23:40.043873894Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:23:40.075556641Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:23:40.076065682Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:23:40.100991395Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:23:40.101042771Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:23:40.101057472Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:23:40.10106965Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:23:40.101078273Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:23:45.118446331Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:23:45.150840434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:23:45.15096329Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:23:45.175098935Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:23:45.175143142Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:23:45.175156582Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:23:45.175168602Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:23:45.175177923Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:23:50.193872052Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:23:50.223524141Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:23:50.223624521Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:23:50.24528198Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:23:50.245323082Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:23:50.245335965Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:23:50.245346815Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:23:50.245355399Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:23:55.264354419Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:23:55.295525278Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:23:55.295618878Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:23:55.31868849Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:23:55.318732133Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:23:55.318745728Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:23:55.318757452Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:23:55.318767073Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:24:00.342100238Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:24:00.385268769Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:24:00.385371517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:24:00.414163997Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:24:00.414209813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:24:00.414223402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:24:00.414279474Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:24:00.41428968Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:24:05.432480047Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:24:05.46365369Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:24:05.463770502Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:24:05.484738918Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:24:05.484781618Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:24:05.484796055Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:24:05.484806711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:24:05.484817382Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:24:10.501582274Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:24:10.53212731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:24:10.532267228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:24:10.55518359Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:24:10.555267393Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:24:10.555290357Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:24:10.555330654Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:24:10.555340977Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:24:15.573939511Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:24:15.603750089Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:24:15.603833422Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:24:15.624541719Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:24:15.624582818Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:24:15.624597524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:24:15.624608495Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:24:15.624616944Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:24:20.640601235Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:24:20.669957802Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:24:20.670041309Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:24:20.696007244Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:24:20.696053381Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:24:20.696069865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:24:20.696101071Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:24:20.696111341Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:24:25.71477136Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:24:25.746418154Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:24:25.746501955Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:24:25.766748776Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:24:25.766815425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:24:25.766830398Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:24:25.766839236Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:24:25.766847535Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:24:30.786543146Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:24:30.815499838Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:24:30.815614393Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:24:30.843058586Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:24:30.843098296Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:24:30.843126828Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:24:30.843137611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:24:30.843145667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:24:35.857785043Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:24:35.887511122Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:24:35.887648002Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:24:35.90707117Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:24:35.907113728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:24:35.907129236Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:24:35.90714006Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:24:40.924517414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:24:40.954438669Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:24:40.954548218Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:24:40.980865118Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:24:40.980909476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:24:40.980922863Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:24:40.980933616Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:24:40.98094217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:24:46.003290431Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:24:46.032562587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:24:46.032675322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:24:46.05306465Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:24:46.053496498Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:24:46.0536983Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:24:46.053955525Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:24:46.05416604Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:24:51.07768531Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:24:51.103895912Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:24:51.103977514Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:24:51.125582387Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:24:51.125627851Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:24:51.125653753Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:24:51.125664391Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:24:51.125672825Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:24:56.140301231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:24:56.169036871Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:24:56.169139159Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:24:56.19104643Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:24:56.191087934Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:24:56.191101231Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:24:56.191112215Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:24:56.191123107Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:25:01.218807588Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:25:01.304439466Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:25:01.304607912Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:25:01.351113324Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:25:01.351152595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:25:01.351165313Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:25:01.351175152Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:25:06.364513426Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:25:06.39584353Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:25:06.395968244Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:25:06.417723904Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:25:06.417782774Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:25:06.417816699Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:25:06.41782732Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:25:06.417852807Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:25:11.435043617Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:25:11.466071303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:25:11.466168002Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:25:11.488843237Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:25:11.488889149Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:25:11.488904651Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:25:11.488915775Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:25:11.488923104Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:25:16.510429577Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:25:16.538136994Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:25:16.538270601Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:25:16.561351215Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:25:16.561394668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:25:16.561408357Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:25:16.561419194Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:25:16.561429068Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:25:21.580002219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:25:21.609926526Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:25:21.610029759Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:25:21.635626132Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:25:21.635674083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:25:21.635687514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:25:21.635699874Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:25:21.635709395Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:25:26.650303689Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:25:26.680305485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:25:26.68051618Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:25:26.701903814Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:25:26.701960054Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:25:26.701973349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:25:26.701982706Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:25:26.701990557Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:25:31.718472722Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:25:31.748125471Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:25:31.748225848Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:25:31.773808738Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:25:31.773850241Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:25:31.773864759Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:25:31.773875317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:25:31.77388553Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:25:36.790585912Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:25:36.818651395Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:25:36.818736594Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:25:36.841911138Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:25:36.841953411Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:25:36.84196972Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:25:36.84198072Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:25:36.841990998Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:25:41.858593311Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:25:41.887755733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:25:41.887878251Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:25:41.908527292Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:25:41.908572086Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:25:41.908585455Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:25:41.90859782Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:25:41.908606986Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:25:46.929445117Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:25:46.960370289Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:25:46.960592451Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:25:46.981207921Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:25:46.981271238Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:25:46.981287022Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:25:46.981307334Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:25:46.981315992Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:25:52.000173759Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:25:52.029623026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:25:52.029730033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:25:52.054511371Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:25:52.05455175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:25:52.054566474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:25:52.054597803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:25:52.054607043Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:25:57.070815116Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:25:57.098265755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:25:57.098363433Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:25:57.120039914Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:25:57.120107293Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:25:57.120122172Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:25:57.120141481Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:25:57.120150031Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:26:02.139514436Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:26:02.170015997Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:26:02.170155043Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:26:02.192582967Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:26:02.192642302Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:26:02.192656623Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:26:02.192667517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:26:02.192676777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:26:07.207668804Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:26:07.240264494Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:26:07.240382262Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:26:07.262882777Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:26:07.262925588Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:26:07.262959381Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:26:07.262969745Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:26:07.262977886Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:26:12.278409065Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:26:12.309189229Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:26:12.309319907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:26:12.333491114Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:26:12.333535875Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:26:12.333550132Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:26:12.333560866Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:26:12.333569098Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:26:17.353803048Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:26:17.382349426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:26:17.382439858Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:26:17.404575089Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:26:17.40461863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:26:17.404633282Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:26:17.404644263Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:26:17.404653548Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:26:22.421484112Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:26:22.450345788Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:26:22.450430845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:26:22.477038753Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:26:22.477094878Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:26:22.477109293Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:26:22.477121888Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:26:22.477131202Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:26:27.490943498Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:26:27.520153145Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:26:27.520290086Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:26:27.541972985Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:26:27.542016154Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:26:27.542031095Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:26:27.54204115Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:26:27.542051293Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:26:32.557109701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:26:32.587972871Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:26:32.588075676Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:26:32.609196865Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:26:32.609250633Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:26:32.609266605Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:26:32.609276736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:26:32.609285303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:26:37.625705801Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:26:37.655264711Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:26:37.655358128Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:26:37.679549542Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:26:37.679596659Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:26:37.6796134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:26:37.679649519Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:26:37.679660217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:26:42.701505721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:26:42.731401315Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:26:42.731539482Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:26:42.755854051Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:26:42.755894872Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:26:42.755908801Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:26:42.75591944Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:26:42.755928437Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:26:47.773399949Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:26:47.800266766Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:26:47.800390679Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:26:47.824395452Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:26:47.82452607Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:26:47.824541179Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:26:47.824552052Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:26:47.824560826Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:26:52.840140132Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:26:52.870701917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:26:52.870787944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:26:52.894096307Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:26:52.894139325Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:26:52.894152507Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:26:52.894162736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:26:52.894171607Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:26:57.914601436Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:26:57.94236225Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:26:57.942443817Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:26:57.966385706Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:26:57.966429783Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:26:57.966442849Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:26:57.966454827Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:26:57.966463699Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:27:02.985582995Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:27:03.020933289Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:27:03.021035293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:27:03.050908392Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:27:03.050953832Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:27:03.050967642Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:27:03.050999701Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:27:03.051009276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:27:08.064522583Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:27:08.095599727Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:27:08.095699071Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:27:08.118898875Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:27:08.118948481Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:27:08.118963927Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:27:13.135469904Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:27:13.167096923Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:27:13.167207764Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:27:13.190790061Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:27:13.190834833Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:27:13.190848728Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:27:13.1908596Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:27:13.190870065Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:27:18.206511588Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:27:18.236314582Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:27:18.236398365Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:27:18.260374304Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:27:18.260416222Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:27:18.260557631Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:27:18.260572987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:27:18.260583228Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:27:23.275452531Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:27:23.304395717Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:27:23.304615683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:27:23.324770187Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:27:23.324814834Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:27:23.324829219Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:27:23.324841631Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:27:23.324851737Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:27:28.340395973Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:27:28.37148043Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:27:28.371589206Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:27:28.391688583Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:27:28.391731488Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:27:28.391744771Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:27:33.409058445Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:27:33.439630413Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:27:33.439718006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:27:33.46146972Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:27:33.461512926Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:27:33.461528038Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:27:33.461538487Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:27:33.461548078Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:27:38.475709015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:27:38.504393125Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:27:38.504551898Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:27:38.529023165Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:27:38.529068563Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:27:38.52908357Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:27:38.529094634Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:27:38.529103593Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:27:43.547594027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:27:43.575884629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:27:43.575967111Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:27:43.602112028Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:27:43.602158723Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:27:43.602173232Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:27:43.60218449Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:27:43.602191652Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:27:48.616216888Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:27:48.646681674Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:27:48.64678982Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:27:48.67063249Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:27:48.670709008Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:27:48.670724844Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:27:48.670734263Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:27:48.670808035Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:27:53.691470224Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:27:53.720668849Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:27:53.720763517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:27:53.745022476Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:27:53.745064844Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:27:53.745078525Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:27:53.745089633Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:27:53.745098091Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:27:58.76182606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:27:58.791183475Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:27:58.791309853Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:27:58.814200342Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:27:58.814253337Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:27:58.814267011Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:27:58.814296112Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:27:58.814305231Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:28:03.831312326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:28:03.862465212Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:28:03.86256851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:28:03.883789409Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:28:03.883834338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:28:03.883846832Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:28:03.883882045Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:28:03.883893461Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:28:08.899834489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:28:08.930646941Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:28:08.930773985Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:28:08.95546035Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:28:08.955502541Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:28:08.955517096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:28:08.95552639Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:28:08.955535328Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:28:13.970918731Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:28:13.998793573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:28:13.998873058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:28:14.024721949Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:28:14.024769024Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:28:14.024783102Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:28:14.024794911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:28:14.024804922Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:28:19.041566049Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:28:19.071569109Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:28:19.071666341Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:28:19.091010422Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:28:19.091069216Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:28:19.091084797Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:28:19.091094482Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:28:19.091102439Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:28:24.109028205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:28:24.138840075Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:28:24.138948901Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:28:24.161978906Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:28:24.162030729Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:28:24.162046342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:28:24.162057409Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:28:24.162065672Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:28:29.174340088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:28:29.205600284Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:28:29.205728199Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:28:29.229244888Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:28:29.229283136Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:28:29.229298162Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:28:29.229309862Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:28:29.229319467Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:28:34.247778402Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:28:34.278856648Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:28:34.278953038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:28:34.30311891Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:28:34.303160266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:28:34.303174189Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:28:34.303186116Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:28:34.303197413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:28:39.317888058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:28:39.350568325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:28:39.351065795Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:28:39.373572471Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:28:39.373620542Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:28:39.373635578Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:28:39.373645804Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:28:39.373654606Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:28:44.39397956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:28:44.423440611Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:28:44.423534271Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:28:44.445080933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:28:44.445124262Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:28:44.445139039Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:28:44.445151037Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:28:44.445159679Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:28:49.461288345Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:28:49.490158072Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:28:49.490278264Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:28:49.510394075Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:28:49.510449727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:28:49.510463695Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:28:49.510476442Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:28:49.510484406Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:28:54.532067464Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:28:54.561800625Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:28:54.561908757Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:28:54.590291234Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:28:54.59033519Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:28:54.590350061Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:28:54.590361372Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:28:54.590371028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:28:59.606285183Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:28:59.636673847Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:28:59.636774296Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:28:59.659029102Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:28:59.659071797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:28:59.659086852Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:28:59.659098024Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:28:59.659107797Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:29:04.673219092Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:29:04.702092167Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:29:04.702191412Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:29:04.726198765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:29:04.726260295Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:29:04.726276185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:29:04.726286571Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:29:04.726296304Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:29:09.742453083Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:29:09.771069541Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:29:09.771183817Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:29:09.797699613Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:29:09.797756329Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:29:09.797770654Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:29:09.797780419Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:29:09.797789159Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:29:14.820129916Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:29:14.852587296Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:29:14.852668786Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:29:14.877416907Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:29:14.877458483Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:29:14.877472569Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:29:14.877483922Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:29:14.877493856Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:29:19.894921771Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:29:19.925890731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:29:19.925976944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:29:19.947822685Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:29:19.947879728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:29:19.94789379Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:29:19.94790421Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:29:19.947923563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:29:24.968702982Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:29:24.999848043Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:29:24.999954192Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:29:25.026060961Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:29:25.026104945Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:29:25.026117966Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:29:25.026129506Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:29:25.02613956Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:29:30.046366119Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:29:30.075040519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:29:30.075147082Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:29:30.094823813Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:29:30.094863841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:29:30.094877671Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:29:30.094913737Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:29:30.094923725Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:29:35.108844012Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:29:35.138975999Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:29:35.139086967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:29:35.164565579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:29:35.164610624Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:29:35.164625194Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:29:35.164654666Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:29:35.164664596Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:29:40.179773184Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:29:40.208205697Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:29:40.208321508Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:29:40.233586017Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:29:40.233645483Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:29:40.233660222Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:29:40.233671227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:29:40.233679508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:29:45.252304452Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:29:45.281253497Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:29:45.2813612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:29:45.306195805Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:29:45.306248675Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:29:45.306263314Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:29:45.306272841Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:29:45.306280921Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:29:50.321059088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:29:50.351608305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:29:50.351714266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:29:50.374711098Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:29:50.374770108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:29:50.374783533Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:29:50.374794019Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:29:50.374802737Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:29:55.389364578Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:29:55.419230771Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:29:55.419344816Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:29:55.439425145Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:29:55.439469225Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:29:55.439482392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:29:55.439493273Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:29:55.439502902Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:30:00.458276495Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:30:00.49020079Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:30:00.490332155Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:30:00.511575549Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:30:00.511620356Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:30:00.511635015Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:30:00.511646723Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:30:00.511656566Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:30:05.525502439Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:30:05.555421916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:30:05.555531618Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:30:05.57961964Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:30:05.579666904Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:30:05.579681286Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:30:05.579713752Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:30:05.57972252Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:30:10.599488764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:30:10.629480394Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:30:10.629586834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:30:10.654213847Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:30:10.654268773Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:30:10.654284383Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:30:10.654295404Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:30:10.654303934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:30:15.671186376Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:30:15.703215833Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:30:15.703338222Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:30:15.723502801Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:30:20.740603476Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:30:20.773090587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:30:20.773189911Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:30:20.793870822Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:30:20.793927437Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:30:20.793943409Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:30:20.793953945Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:30:20.79396224Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:30:25.817372887Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:30:25.847835918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:30:25.847937864Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:30:25.873172269Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:30:25.87321225Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:30:25.873225164Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:30:25.873284991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:30:25.873294472Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:30:30.889470082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:30:30.91902942Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:30:30.919116891Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:30:30.942710754Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:30:30.942770605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:30:30.942785991Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:30:30.942795197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:30:30.942803277Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:30:35.961183808Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:30:35.990841735Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:30:35.990937608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:30:36.014917305Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:30:36.014960523Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:30:36.015006777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:30:36.0150181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:30:36.015026759Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:30:41.034956842Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:30:41.067621226Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:30:41.067726407Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:30:41.093807395Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:30:41.093853198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:30:41.093867833Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:30:46.114773864Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:30:46.144524612Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:30:46.144631548Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:30:46.168826167Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:30:46.169304073Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:30:46.169476936Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:30:46.169493173Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:30:46.169515398Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:30:51.188510177Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:30:51.219516444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:30:51.219615242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:30:51.241891696Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:30:51.241935915Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:30:51.241949929Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:30:51.24196118Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:30:51.24197096Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:30:56.256207837Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:30:56.286853447Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:30:56.286979823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:30:56.311782122Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:30:56.311825299Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:30:56.311840625Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:30:56.311862214Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:30:56.311871664Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:31:01.335594529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:31:01.371035095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:31:01.371127848Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:31:01.399105638Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:31:01.399148622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:31:01.399162671Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:31:01.399174107Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:31:01.399183379Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:31:06.413368175Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:31:06.442268203Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:31:06.442369482Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:31:06.463142517Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:31:06.463184397Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:31:06.463220179Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:31:06.463231345Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:31:06.463252261Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:31:11.47975955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:31:11.509031066Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:31:11.509135375Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:31:11.532524173Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:31:11.532566457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:31:11.532581998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:31:16.551210272Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:31:16.581874255Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:31:16.581957332Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:31:16.604064274Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:31:16.604108002Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:31:16.604122006Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:31:16.604132522Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:31:16.604140718Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:31:21.624516058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:31:21.658251616Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:31:21.658385118Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:31:21.681582589Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:31:21.681642348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:31:21.68165644Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:31:21.681679282Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:31:21.681703488Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:31:26.697974551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:31:26.727313341Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:31:26.72740873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:31:26.749663259Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:31:26.749710047Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:31:26.749725367Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:31:26.749737335Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:31:26.749747659Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:31:31.774389018Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:31:31.802194534Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:31:31.802352167Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:31:31.821871318Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:31:31.821913654Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:31:31.821927218Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:31:36.836958049Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:31:36.868480617Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:31:36.868565127Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:31:36.895162737Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:31:36.895217759Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:31:36.895261918Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:31:36.895273259Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:31:36.895281367Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:31:41.911039154Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:31:41.940739748Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:31:41.940830762Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:31:41.960947648Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:31:41.960995296Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:31:41.96100933Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:31:41.961019719Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:31:41.961030777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:31:46.981291487Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:31:47.01301183Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:31:47.013102785Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:31:47.036001067Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:31:47.036054193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:31:47.036069209Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:31:47.036081247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:31:47.036091969Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:31:52.055729366Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:31:52.083497552Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:31:52.083609154Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:31:52.106938413Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:31:52.106994259Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:31:52.10700864Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:31:52.107018348Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:31:52.107027051Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:31:57.12418509Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:31:57.157902856Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:31:57.158005414Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:31:57.18047857Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:31:57.180527014Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:31:57.180551849Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:31:57.18056324Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:31:57.180572427Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:32:02.211468519Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:32:02.306843797Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:32:02.306958793Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:32:02.33320079Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:32:02.333256868Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:32:02.333271425Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:32:02.333282557Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:32:02.333291938Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:32:07.347439334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:32:07.38112423Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:32:07.381217799Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:32:07.407592952Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:32:07.407636079Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:32:07.407648956Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:32:07.407659768Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:32:07.407668968Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:32:12.427161165Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:32:12.459614497Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:32:12.459725827Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:32:12.47999132Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:32:12.480038359Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:32:12.480051544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:32:12.48006287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:32:12.480072987Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:32:17.497651945Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:32:17.52579763Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:32:17.525927712Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:32:17.551035299Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:32:17.551078113Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:32:17.551090694Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:32:22.571584426Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:32:22.601828002Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:32:22.601921999Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:32:22.624724436Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:32:22.624779818Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:32:22.624795521Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:32:22.624805599Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:32:22.624814482Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:32:27.641860065Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:32:27.67222707Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:32:27.67232742Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:32:27.69422384Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:32:27.694281854Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:32:27.694295526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:32:27.694304823Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:32:27.694312899Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:32:32.70976819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:32:32.741330684Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:32:32.741426422Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:32:32.764221247Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:32:32.764276095Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:32:32.764291167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:32:32.764302023Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:32:32.764311039Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:32:37.777633006Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:32:37.807200536Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:32:37.80730151Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:32:37.83344985Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:32:37.833494313Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:32:37.833507962Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:32:37.833517624Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:32:37.83352682Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:32:42.85207164Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:32:42.882887725Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:32:42.883019059Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:32:42.903447807Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:32:42.903488248Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:32:42.903506585Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:32:42.903517162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:32:42.903535617Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:32:47.917585084Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:32:47.948372617Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:32:47.948594746Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:32:47.973223324Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:32:47.973295721Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:32:47.973309836Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:32:47.973318554Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:32:47.97332734Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:32:52.990433262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:32:53.01965366Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:32:53.019748236Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:32:53.045737561Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:32:53.045800785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:32:53.045816234Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:32:53.045837005Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:32:53.045860778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:32:58.060939254Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:32:58.090438665Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:32:58.090544059Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:32:58.114963242Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:32:58.115002574Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:32:58.115016603Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:32:58.115026294Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:32:58.115036668Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:33:03.12915159Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:33:03.158690536Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:33:03.158776434Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:33:03.182986806Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:33:03.183043113Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:33:03.183057658Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:33:03.183093786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:33:03.183111239Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:33:08.196002221Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:33:08.226580805Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:33:08.226671709Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:33:08.247480683Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:33:08.247525004Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:33:08.247539105Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:33:08.247549742Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:33:08.247558204Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:33:13.266592571Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:33:13.296660842Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:33:13.296782643Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:33:13.318419284Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:33:13.318484982Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:33:13.318499899Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:33:13.318510705Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:33:13.318518885Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:33:18.334276907Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:33:18.362861981Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:33:18.362959967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:33:18.38808735Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:33:18.388130023Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:33:18.388164747Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:33:18.38817526Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:33:18.388183353Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:33:23.40422088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:33:23.432963793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:33:23.4330499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:33:23.453760456Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:33:23.453803088Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:33:23.453818094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:33:23.453836563Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:33:23.453845715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:33:28.471463108Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:33:28.500531292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:33:28.500613874Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:33:28.524675814Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:33:28.524718453Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:33:28.524732683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:33:28.524744544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:33:28.524754426Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:33:33.540448673Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:33:33.570825743Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:33:33.570919932Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:33:33.59010258Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:33:33.590145348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:33:33.590159119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:33:33.590169611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:33:33.59018002Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:33:38.607567034Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:33:38.641278954Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:33:38.641403673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:33:38.66517667Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:33:38.665223216Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:33:38.665251969Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:33:38.665265132Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:33:38.665274807Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:33:43.680457581Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:33:43.71054405Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:33:43.710643376Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:33:43.73671301Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:33:43.736765617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:33:43.736782124Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:33:43.736793181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:33:43.736802092Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:33:48.751817324Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:33:48.781209621Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:33:48.781318651Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:33:48.803955332Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:33:48.803997201Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:33:48.804010901Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:33:48.804043818Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:33:48.804052587Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:33:53.824291076Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:33:53.85495097Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:33:53.855066224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:33:53.878337687Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:33:53.878390339Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:33:53.878404801Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:33:53.87841605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:33:53.878424418Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:33:58.894587723Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:33:58.920715106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:33:58.92080918Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:33:58.942003696Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:33:58.942044331Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:33:58.942057517Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:33:58.942068274Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:33:58.942077086Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:34:03.96377222Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:34:03.993555151Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:34:03.993644342Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:34:04.019110844Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:34:04.019156765Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:34:04.019171112Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:34:04.019182379Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:34:04.019191494Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:34:09.03651773Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:34:09.067404326Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:34:09.067490882Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:34:09.087147076Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:34:09.087187729Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:34:09.087202413Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:34:09.087213281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:34:09.08722288Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:34:14.107281652Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:34:14.138750013Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:34:14.138847856Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:34:14.160331343Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:34:14.160377593Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:34:14.160468076Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:34:14.160481612Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:34:14.160491845Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:34:19.174792213Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:34:19.205743006Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:34:19.205835117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:34:19.228998416Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:34:19.229039086Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:34:19.229052255Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:34:19.229065159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:34:19.22907512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:34:24.241765389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:34:24.271849581Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:34:24.271962376Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:34:24.293298918Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:34:24.293340455Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:34:24.293354672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:34:24.293389188Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:34:24.293398429Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:34:29.308960254Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:34:29.34234695Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:34:29.342430527Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:34:29.363563412Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:34:29.363625009Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:34:29.363639185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:34:29.363658906Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:34:29.36366956Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:34:34.382114101Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:34:34.412948416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:34:34.413034928Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:34:34.438216764Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:34:34.438275672Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:34:34.438290316Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:34:34.438302511Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:34:34.438311769Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:34:39.453518381Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:34:39.484126117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:34:39.484204038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:34:39.506645122Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:34:39.506786126Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:34:39.506804242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:34:39.506824943Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:34:39.50683461Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:34:44.527768397Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:34:44.558601644Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:34:44.558713817Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:34:44.578333063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:34:44.578412681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:34:44.578434491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:34:44.578444736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:34:44.578454225Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:34:49.59382084Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:34:49.622620755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:34:49.622721026Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:34:49.646986974Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:34:49.647030744Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:34:49.647045921Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:34:49.647068176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:34:49.647076977Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:34:54.663060157Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:34:54.693859882Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:34:54.693955093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:34:54.71867182Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:34:54.718725341Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:34:59.735252339Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:34:59.764936211Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:34:59.765049302Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:34:59.788007721Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:35:04.801920917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:35:04.831906843Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:35:04.83200362Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:35:04.855427343Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:35:04.855469425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:35:04.855482543Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:35:04.855514172Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:35:04.855523659Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:35:09.873594503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:35:09.901322904Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:35:09.901409431Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:35:09.922222655Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:35:09.922666601Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:35:09.922691272Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:35:09.922704182Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:35:09.922715399Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:35:14.941678452Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:35:14.971279847Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:35:14.971373258Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:35:14.995049783Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:35:14.995103745Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:35:14.995119681Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:35:14.995130033Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:35:14.995138241Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:35:20.017289128Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:35:20.047758566Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:35:20.047865956Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:35:20.071468606Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:35:20.071512921Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:35:20.071527686Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:35:20.07153735Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:35:20.07154669Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:35:25.090072119Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:35:25.122064947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:35:25.12215946Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:35:25.145369143Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:35:25.145844543Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:35:25.146028248Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:35:25.146255349Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:35:25.14627077Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:35:30.165436309Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:35:30.196163796Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:35:30.196266327Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:35:30.219176126Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:35:30.219219385Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:35:30.219245571Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:35:30.219257058Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:35:30.2192654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:35:35.235174092Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:35:35.265972903Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:35:35.266080322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:35:35.289567161Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:35:35.289624134Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:35:35.289650372Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:35:35.289659396Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:35:35.28966815Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:35:40.309839225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:35:40.340594518Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:35:40.340689554Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:35:40.363492065Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:35:40.363531906Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:35:40.363544392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:35:40.363556253Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:35:40.363566621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:35:45.381783441Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:35:45.412313033Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:35:45.412562048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:35:45.437759046Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:35:45.43779986Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:35:45.43782888Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:35:45.437838372Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:35:45.43784648Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:35:50.455719201Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:35:50.485059632Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:35:50.4851771Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:35:50.5101818Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:35:50.510222875Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:35:50.510261721Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:35:50.510274637Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:35:50.510284504Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:35:55.528750625Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:35:55.557361393Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:35:55.557440422Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:35:55.579646991Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:35:55.579691179Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:35:55.579704485Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:35:55.579714878Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:35:55.579724541Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:36:00.598293111Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:36:00.62963016Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:36:00.629748376Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:36:00.654180008Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:36:00.654220452Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:36:00.654234456Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:36:00.654279638Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:36:00.654288303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:36:05.669613356Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:36:05.700928017Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:36:05.70103172Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:36:05.726339512Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:36:05.726383947Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:36:05.726397178Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:36:05.726409108Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:36:05.726419281Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:36:10.740569856Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:36:10.771808901Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:36:10.77191355Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:36:10.795172599Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:36:10.795214985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:36:15.81023113Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:36:15.839546839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:36:15.839666387Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:36:15.862357459Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:36:15.862397684Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:36:15.862411094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:36:15.862421897Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:36:15.862430256Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:36:20.881872796Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:36:20.914894444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:36:20.915017366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:36:20.941547262Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:36:20.941594819Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:36:20.941609508Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:36:20.941622363Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:36:20.941632849Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:36:25.957002569Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:36:25.989737691Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:36:25.989883283Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:36:26.013109891Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:36:26.013152195Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:36:26.013167084Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:36:26.013178773Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:36:26.013188406Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:36:31.032874757Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:36:31.060924224Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:36:31.061013553Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:36:31.085838002Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:36:31.085879704Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:36:31.085892874Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:36:31.085904596Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:36:31.085914111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:36:36.102075349Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:36:36.133326745Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:36:36.13345137Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:36:36.156785838Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:36:36.15684695Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:36:36.156863224Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:36:36.156875656Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:36:36.156886424Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:36:41.173114491Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:36:41.203567058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:36:41.203653295Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:36:41.22731046Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:36:41.227352064Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:36:41.227366101Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:36:41.227375919Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:36:41.227385107Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:36:46.24155682Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:36:46.2721921Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:36:46.272309751Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:36:46.295708582Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:36:46.295750921Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:36:46.295764253Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:36:46.295774976Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:36:46.295783909Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:36:51.310780001Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:36:51.340727451Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:36:51.340858956Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:36:51.364378005Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:36:51.364504165Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:36:51.364521941Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:36:51.364532494Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:36:51.364541103Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:36:56.379426064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:36:56.409990273Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:36:56.410106511Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:36:56.433568848Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:36:56.433612961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:36:56.433626811Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:36:56.433638002Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:37:01.460337834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:37:01.505439164Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:37:01.505536396Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:37:01.54592331Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:37:01.546050868Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:37:01.546068088Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:37:01.546124663Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:37:01.546134303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:37:06.562048561Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:37:06.591286938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:37:06.591731228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:37:06.616680634Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:37:06.616725928Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:37:06.616740268Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:37:06.616751601Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:37:06.616761107Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:37:11.638286545Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:37:11.667197305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:37:11.667300565Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:37:11.693023249Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:37:11.6930865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:37:11.693100866Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:37:11.693158453Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:37:11.693168016Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:37:16.71087149Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:37:16.741073327Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:37:16.741178525Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:37:16.7615431Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:37:16.761586261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:37:16.761599968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:37:16.761611298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:37:16.761620399Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:37:21.778047645Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:37:21.807803797Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:37:21.807909026Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:37:21.829866182Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:37:21.82991185Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:37:21.829926358Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:37:21.829935078Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:37:21.829941742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:37:26.844573091Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:37:26.873592648Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:37:26.873682092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:37:26.895289502Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:37:26.895330575Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:37:26.895343786Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:37:26.895353493Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:37:26.895361478Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:37:31.91061083Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:37:31.942765814Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:37:31.942859308Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:37:31.966265526Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:37:31.966305668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:37:31.966319095Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:37:31.966329596Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:37:31.966338309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:37:36.982004192Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:37:37.013038325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:37:37.01313622Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:37:37.037158513Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:37:37.037215111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:37:37.037230745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:37:37.037262174Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:37:37.037270693Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:37:42.056020895Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:37:42.086221129Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:37:42.086322873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:37:42.113417466Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:37:42.113869866Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:37:42.113893686Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:37:42.113907398Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:37:42.113918251Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:37:47.133274019Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:37:47.161589448Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:37:47.161676634Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:37:47.182432103Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:37:47.182486863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:37:47.182501155Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:37:47.182510622Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:37:47.182518723Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:37:52.201813883Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:37:52.232142216Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:37:52.232226578Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:37:52.258224837Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:37:52.258285028Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:37:52.258299414Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:37:52.258310442Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:37:57.272155356Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:37:57.301456564Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:37:57.301963866Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:37:57.323838361Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:37:57.323883846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:37:57.323897544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:38:02.34421143Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:38:02.374309236Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:38:02.374414742Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:38:02.401147048Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:38:02.401190333Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:38:02.401204006Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:38:02.40121375Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:38:02.401222253Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:38:07.416141676Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:38:07.446578398Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:38:07.446692196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:38:07.470705244Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:38:07.470749461Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:38:07.470763915Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:38:07.470773896Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:38:07.470782455Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:38:12.493062074Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:38:12.522317466Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:38:12.522422873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:38:12.547152578Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:38:12.547191431Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:38:12.547219692Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:38:12.547231131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:38:12.547259423Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:38:17.562309127Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:38:17.593190462Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:38:17.59333172Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:38:17.616374924Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:38:17.616541194Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:38:17.616559037Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:38:17.616570554Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:38:17.616579621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:38:22.638283257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:38:22.669842191Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:38:22.669952375Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:38:22.694869576Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:38:22.694912552Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:38:22.694927014Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:38:27.714136286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:38:27.743816338Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:38:27.743910124Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:38:27.76740102Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:38:27.767447782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:38:27.76746327Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:38:27.767497724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:38:27.767506271Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:38:32.78754397Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:38:32.818971823Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:38:32.819082968Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:38:32.842230615Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:38:32.842599193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:38:32.842620604Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:38:32.842632611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:38:32.842643454Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:38:37.860602577Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:38:37.899141627Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:38:37.899249414Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:38:37.935664541Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:38:37.935710833Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:38:37.935748522Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:38:37.935776484Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:38:37.935788351Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:38:42.958755374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:38:42.989809578Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:38:42.98989301Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:38:43.013339407Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:38:43.013393745Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:38:43.013409178Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:38:43.013419551Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:38:43.013428626Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:38:48.030511598Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:38:48.060523084Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:38:48.060626244Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:38:48.086384142Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:38:48.086427473Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:38:48.086441302Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:38:48.086452159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:38:48.086461998Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:38:53.107284227Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:38:53.137495653Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:38:53.137609113Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:38:53.163011785Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:38:53.163066883Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:38:53.163082856Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:38:53.163094262Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:38:53.163102493Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:38:58.179073936Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:38:58.207015037Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:38:58.207117765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:38:58.231430315Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:38:58.231470611Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:38:58.23148385Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:38:58.23149547Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:38:58.231505662Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:39:03.25361643Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:39:03.312918804Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:39:03.313038758Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:39:03.334395865Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:39:03.334439874Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:39:03.334452756Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:39:03.334464495Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:39:03.33447276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:39:08.348582569Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:39:08.379746389Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:39:08.379836357Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:39:08.401845734Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:39:08.401887428Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:39:08.40190293Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:39:08.401912237Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:39:08.401921012Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:39:13.424292987Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:39:13.451648301Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:39:13.451732091Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:39:13.476096688Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:39:13.476141579Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:39:13.476155099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:39:18.490961389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:39:18.518731437Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:39:18.518813285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:39:18.542471029Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:39:18.54252401Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:39:18.54253854Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:39:18.542548419Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:39:18.542556907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:39:23.562528262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:39:23.594143677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:39:23.594271299Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:39:23.61436165Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:39:23.614408179Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:39:23.61444526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:39:23.614457078Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:39:23.614465194Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:39:28.630173716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:39:28.661127495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:39:28.661225687Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:39:28.683511359Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:39:28.683552892Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:39:28.683566024Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:39:28.683576837Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:39:28.683586957Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:39:33.700923311Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:39:33.732394453Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:39:33.733016733Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:39:33.754959871Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:39:33.755005877Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:39:33.755021037Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:39:33.755034042Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:39:33.755043517Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:39:38.77343791Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:39:38.803755588Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:39:38.803844385Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:39:38.82943123Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:39:38.829477321Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:39:38.829491588Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:39:43.849481481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:39:43.877844034Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:39:43.8779534Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:39:43.90388932Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:39:43.903937289Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:39:43.903953156Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:39:43.904013253Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:39:43.904023933Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:39:48.918963137Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:39:48.950990995Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:39:48.951079862Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:39:48.973545064Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:39:48.973607887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:39:48.973624476Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:39:48.973633729Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:39:48.973641852Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:39:53.994614435Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:39:54.022352991Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:39:54.022438675Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:39:54.043779387Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:39:54.043818734Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:39:54.043831916Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:39:54.043843531Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:39:54.043853696Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:39:59.056196836Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:39:59.088301865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:39:59.088541049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:39:59.114038119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:39:59.114081762Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:39:59.114095736Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:39:59.114108076Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:39:59.114117259Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:40:04.133555875Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:40:04.163752736Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:40:04.163842722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:40:04.186429837Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:40:04.186471872Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:40:04.186485033Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:40:04.186496283Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:40:04.186505417Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:40:09.20250442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:40:09.233911055Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:40:09.234025119Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:40:09.258490468Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:40:09.258545304Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:40:09.258561521Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:40:09.258571949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:40:09.258580238Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:40:14.277695576Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:40:14.307530832Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:40:14.307634775Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:40:14.333596424Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:40:14.333639621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:40:14.333654553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:40:14.333665692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:40:14.333674719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:40:19.350069699Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:40:19.379606494Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:40:19.379707309Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:40:19.3990491Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:40:19.399089949Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:40:19.399103045Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:40:19.399112966Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:40:19.399123272Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:40:24.416690125Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:40:24.447018697Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:40:24.447105463Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:40:24.468893393Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:40:24.468962826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:40:24.468985439Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:40:24.469035617Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:40:24.469045463Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:40:29.485437872Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:40:29.514680495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:40:29.514783072Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:40:29.539682907Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:40:29.539722792Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:40:29.539735818Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:40:29.539756377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:40:29.539765285Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:40:34.556140479Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:40:34.586524039Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:40:34.586624611Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:40:34.607635277Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:40:34.607678256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:40:34.607691841Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:40:34.607703087Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:40:34.607713014Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:40:39.624163744Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:40:39.654608429Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:40:39.655018276Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:40:39.675208331Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:40:39.675262346Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:40:39.675276166Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:40:39.6752858Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:40:39.675293923Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:40:44.692305286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:40:44.720220889Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:40:44.720318102Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:40:44.744854036Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:40:44.744901524Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:40:44.744916378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:40:44.744927727Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:40:44.744937888Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:40:49.760358074Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:40:49.792319939Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:40:49.792485642Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:40:49.812531476Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:40:49.812582484Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:40:49.812599066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:40:49.812610525Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:40:49.812619449Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:40:54.828830416Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:40:54.858678356Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:40:54.858767188Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:40:54.881259922Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:40:54.881304445Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:40:54.881320343Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:40:59.896093926Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:40:59.927906817Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:40:59.92799296Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:40:59.950848323Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:40:59.950890712Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:40:59.950903163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:40:59.950931122Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:40:59.950940606Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:41:04.964543625Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:41:04.994793104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:41:04.994889329Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:41:05.018840564Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:41:05.018883769Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:41:05.018897213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:41:05.018908736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:41:05.018918709Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:41:10.035025326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:41:10.06434772Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:41:10.06458113Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:41:10.08540119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:41:10.085443673Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:41:10.085457005Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:41:10.085466708Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:41:10.085477962Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:41:15.10385074Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:41:15.137605529Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:41:15.137719553Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:41:15.158827722Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:41:15.158887061Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:41:15.158900748Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:41:15.158912314Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:41:15.159093518Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T17:41:15.158923127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:41:20.175290722Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:41:20.203493312Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:41:20.203595433Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:41:20.223475981Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:41:20.223531527Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:41:20.223547615Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:41:20.223558561Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:41:20.223566871Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:41:25.242584871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:41:25.27137985Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:41:25.271491092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:41:25.296386211Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:41:25.296548738Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:41:25.296564931Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:41:25.296576745Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:41:25.29658612Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:41:30.313071795Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:41:30.344825895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:41:30.344914612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:41:30.370130741Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:41:30.370186448Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:41:30.370200248Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:41:30.370211291Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:41:30.370220509Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:41:35.385030895Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:41:35.418408068Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:41:35.418520474Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:41:35.447087854Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:41:35.447126835Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:41:35.447140292Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:41:35.447150452Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:41:35.447158881Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:41:40.464677099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:41:40.494169804Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:41:40.494301369Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:41:40.517175754Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:41:40.517231932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:41:40.51727285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:41:40.51729462Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:41:40.517303433Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:41:45.53961543Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:41:45.570128245Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:41:45.570217835Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:41:45.591752306Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:41:45.591796409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:41:45.591809842Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:41:45.591820951Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:41:45.591831272Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:41:50.608941393Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:41:50.63870934Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:41:50.638795186Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:41:50.663730648Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:41:50.663785808Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:41:50.663801352Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:41:50.663812851Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:41:50.663821147Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:41:55.682274971Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:41:55.712082244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:41:55.712165315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:41:55.73442388Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:41:55.734464766Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:41:55.734477921Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:41:55.734489024Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:41:55.734499262Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:42:00.749910277Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:42:00.781615688Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:42:00.781701023Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:42:00.806309108Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:42:00.806350905Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:42:00.806365317Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:42:00.806375331Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:42:05.818118493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:42:05.848616533Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:42:05.848710257Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:42:05.869702343Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:42:05.869760072Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:42:05.869775472Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:42:05.869786917Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:42:05.869926273Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T17:42:05.870227992Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T17:42:05.869795956Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:42:10.888665856Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:42:10.921223378Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:42:10.921342169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:42:10.947546989Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:42:10.947591823Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:42:10.947603987Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:42:10.947613904Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:42:10.947622587Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:42:15.96926673Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:42:15.997341816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:42:15.997439063Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:42:16.018826306Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:42:16.018887358Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:42:16.018901537Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:42:16.018911643Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:42:16.018920335Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:42:21.036230073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:42:21.066085661Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:42:21.066551825Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:42:21.087399074Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:42:21.087444914Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:42:21.087458053Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:42:21.087468632Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:42:21.087478435Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:42:26.102169437Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:42:26.131447519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:42:26.131542493Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:42:26.1579563Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:42:26.157997534Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:42:26.158011431Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:42:26.158021528Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:42:31.179576764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:42:31.207231856Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:42:31.207328228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:42:31.230299643Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:42:31.230342941Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:42:31.230357345Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:42:31.230384403Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:42:31.230393346Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:42:36.245089599Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:42:36.276222249Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:42:36.276363472Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:42:36.297715468Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:42:36.29777211Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:42:36.297786343Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:42:41.314384775Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:42:41.344640311Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:42:41.344748512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:42:41.366361976Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:42:41.366401345Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:42:41.366414245Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:42:46.380138344Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:42:46.411603496Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:42:46.411689215Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:42:46.436022604Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:42:46.436066789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:42:46.436080427Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:42:46.43609227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:42:46.436102705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:42:51.451770668Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:42:51.480646747Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:42:51.480750334Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:42:51.503985732Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:42:51.504032361Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:42:51.504045945Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:42:51.504056702Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:42:51.504066026Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:42:56.52051518Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:42:56.550671599Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:42:56.550805352Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:42:56.572220744Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:42:56.572279671Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:42:56.572294941Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:42:56.572306584Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:42:56.572315565Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:43:01.591572488Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:43:01.621753626Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:43:01.621856649Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:43:01.645924821Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:43:01.645965829Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:43:01.645999777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:43:01.646010632Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:43:01.646018872Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:43:06.665531796Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:43:06.693589478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:43:06.693693688Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:43:06.71673708Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:43:06.71677876Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:43:06.716791437Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:43:06.716804011Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:43:06.716813449Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:43:11.734784057Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:43:11.763179066Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:43:11.763302072Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:43:11.791315573Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:43:11.791359143Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:43:11.791373088Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:43:11.791384091Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:43:11.791393268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:43:16.812281228Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:43:16.840090913Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:43:16.840198495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:43:16.863433276Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:43:16.863488021Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:43:21.883278011Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:43:21.912656559Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:43:21.912762904Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:43:21.937115029Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:43:21.937160973Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:43:21.937175841Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:43:21.937186875Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:43:21.937194242Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:43:26.952946266Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:43:26.981049065Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:43:26.981148773Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:43:27.001272061Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:43:27.001315314Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:43:27.001329139Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:43:27.001341166Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:43:27.001351251Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:43:32.019668643Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:43:32.050417553Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:43:32.050538256Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:43:32.07424556Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:43:32.07429959Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:43:32.074314259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:43:37.088015471Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:43:37.118352074Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:43:37.118452443Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:43:37.140147681Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:43:37.140193126Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:43:37.140206621Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:43:37.14021818Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:43:37.140227123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:43:42.155147321Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:43:42.187045757Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:43:42.187134592Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:43:42.21149712Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:43:42.211554759Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:43:42.211570363Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:43:42.211581334Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:43:42.211589895Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:43:47.230366672Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:43:47.261854102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:43:47.261936475Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:43:47.285062368Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:43:47.285104281Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:43:47.2851192Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:43:47.285130714Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:43:47.285140823Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:43:52.304797717Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:43:52.333342211Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:43:52.333450815Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:43:52.357401189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:43:52.357444591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:43:52.357459166Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:43:52.357469639Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:43:52.357478308Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:43:57.372823413Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:43:57.402860486Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:43:57.40296465Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:43:57.426007353Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:43:57.42605003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:43:57.426063269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:43:57.426075008Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:43:57.426084672Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:44:02.442140326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:44:02.47265468Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:44:02.472767264Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:44:02.498790731Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:44:02.49883423Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:44:02.498850101Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:44:07.514294212Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:44:07.541026886Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:44:07.541115133Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:44:07.564256634Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:44:07.56429722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:44:07.564311805Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:44:07.564322456Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:44:07.564332551Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:44:12.586881218Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:44:12.617211842Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:44:12.617353473Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:44:12.641043399Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:44:12.641086715Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:44:12.641099779Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:44:12.641110555Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:44:12.641118661Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:44:17.655900857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:44:17.686610438Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:44:17.686703912Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:44:17.710435485Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:44:17.710478077Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:44:17.710491016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:44:17.710531019Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:44:17.710539642Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:44:22.722842836Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:44:22.753861111Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:44:22.753968095Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:44:22.778062206Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:44:22.778104008Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:44:22.778117899Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:44:22.778129262Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:44:22.778138336Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:44:27.794456634Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:44:27.822328795Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:44:27.822429583Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:44:27.844289086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:44:27.844334245Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:44:27.844349852Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:44:27.844385766Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:44:27.844396947Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:44:32.863625194Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:44:32.891131973Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:44:32.891270683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:44:32.917067223Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:44:32.917110743Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:44:32.917125115Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:44:32.917134998Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:44:32.917143352Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:44:37.932942499Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:44:37.963102871Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:44:37.96320947Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:44:37.986632989Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:44:37.986674447Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:44:37.986686975Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:44:37.986696764Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:44:37.986706592Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:44:43.004123404Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:44:43.034126407Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:44:43.034208528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:44:43.055175711Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:44:43.05521956Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:44:43.055245302Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:44:43.055257097Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:44:43.055265366Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:44:48.07295539Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:44:48.100979381Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:44:48.101081003Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:44:48.122138695Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:44:48.122177398Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:44:48.122191714Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:44:48.122202168Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:44:48.122210841Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:44:53.141974526Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:44:53.172149691Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:44:53.172249176Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:44:53.197250403Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:44:53.197296769Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:44:53.197309977Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:44:53.197320784Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:44:53.197330548Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:44:58.212948676Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:44:58.245322165Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:44:58.245433098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:44:58.268788147Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:44:58.268829312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:44:58.268843625Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:44:58.26885529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:44:58.268865061Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:45:03.287989273Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:45:03.318200598Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:45:03.318316618Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:45:03.339188261Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:45:03.339253768Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:45:03.339270407Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:45:03.339326143Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:45:03.339335296Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:45:08.358293823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:45:08.386640763Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:45:08.386752817Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:45:08.408296924Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:45:08.408352002Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:45:08.40836735Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:45:08.408389648Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:45:08.408571439Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:45:13.42531887Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:45:13.45627065Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:45:13.456355853Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:45:13.476833446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:45:13.476891777Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:45:13.476926017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:45:13.476962645Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:45:13.476971974Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:45:18.495377253Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:45:18.522783358Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:45:18.522873898Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:45:18.545048622Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:45:18.545091133Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:45:18.5451048Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:45:18.545149726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:45:18.545159103Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:45:23.561583564Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:45:23.589765846Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:45:23.589860821Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:45:23.609981039Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:45:23.610022902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:45:23.61003705Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:45:23.610049839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:45:23.610058971Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:45:28.626631706Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:45:28.657564815Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:45:28.657669975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:45:28.679068327Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:45:28.679108823Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:45:28.679121613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:45:28.679133121Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:45:28.679142308Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:45:33.696846684Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:45:33.7276013Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:45:33.727709364Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:45:33.751315737Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:45:33.751357978Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:45:33.751372454Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:45:33.751384235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:45:33.751393417Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:45:38.766511108Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:45:38.798090959Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:45:38.798191864Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:45:38.818968095Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:45:38.819008879Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:45:38.819022767Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:45:43.838832277Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:45:43.866448901Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:45:43.866520528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:45:43.885949871Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:45:43.886009289Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:45:43.886024935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:45:43.886034661Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:45:43.88604276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:45:48.903772318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:45:48.934899005Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:45:48.934994151Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:45:48.958708056Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:45:48.958750372Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:45:48.958766071Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:45:48.958775245Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:45:48.958783628Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:45:53.97853998Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:45:54.006171485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:45:54.006285403Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:45:54.026810321Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:45:54.026852514Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:45:54.026900463Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:45:54.026913131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:45:54.026921179Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:45:59.041437251Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:45:59.071383268Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:45:59.071467047Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:45:59.091436258Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:45:59.091498788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:45:59.091514955Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:45:59.091566426Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:45:59.091577043Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:46:04.110221701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:46:04.140147684Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:46:04.14024913Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:46:04.163682668Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:46:04.163722538Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:46:04.16411169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:46:04.16413248Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:46:04.16414387Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:46:09.182278112Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:46:09.212149161Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:46:09.21226942Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:46:09.236060151Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:46:09.236105534Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:46:09.236147782Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:46:09.236177826Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:46:09.236271942Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:46:14.257023269Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:46:14.284368067Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:46:14.284634145Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:46:14.306166912Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:46:14.306214474Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:46:14.306229553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:46:14.306263927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:46:14.306273114Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:46:19.32257332Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:46:19.352682553Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:46:19.352758887Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:46:19.37622922Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:46:19.376285952Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:46:19.376300913Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:46:19.376311812Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:46:19.3763209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:46:24.395328398Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:46:24.423839793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:46:24.423947396Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:46:24.448804772Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:46:24.448844938Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:46:24.448859443Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:46:24.448869895Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:46:24.44888039Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:46:29.465008526Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:46:29.4968136Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:46:29.496927675Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:46:29.520666167Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:46:34.543261765Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:46:34.571430298Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:46:34.571537772Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:46:34.595802365Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:46:34.595844401Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:46:34.595857725Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:46:34.595891405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:46:34.595900192Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:46:39.611995544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:46:39.642499131Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:46:39.642594856Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:46:39.665407319Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:46:39.665462277Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:46:39.665477678Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:46:39.665488703Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:46:39.665496858Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:46:44.686279003Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:46:44.715313615Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:46:44.715396146Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:46:44.736085913Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:46:44.736290232Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:46:44.736308924Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:46:44.736318851Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:46:44.736328017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:46:49.755718756Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:46:49.785503373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:46:49.785605998Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:46:49.807725894Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:46:49.807769297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:46:49.807782287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:46:49.807791907Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:46:49.807802083Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:46:54.827809864Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:46:54.857467602Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:46:54.857564677Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:46:54.882510718Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:46:54.882560683Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:46:54.882575745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:46:54.882586333Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:46:54.882595702Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:46:59.899104093Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:46:59.926949671Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:46:59.927089108Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:46:59.948195481Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:46:59.94824941Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:46:59.948264414Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:46:59.948276274Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:46:59.948284619Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:47:04.96029371Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:47:04.99022615Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:47:04.990350437Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:47:05.014572721Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:47:05.014615163Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:47:05.014656413Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:47:05.014666768Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:47:05.01467486Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:47:10.030360108Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:47:10.061077719Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:47:10.061182703Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:47:10.085971772Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:47:10.08603637Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:47:10.086051699Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:47:10.086100605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:47:10.086111759Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:47:15.108038239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:47:15.138199382Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:47:15.138313208Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:47:15.162644758Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:47:15.16268722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:47:20.181941178Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:47:20.212323718Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:47:20.212398587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:47:20.239283819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:47:20.239330614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:47:20.239345606Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:47:20.239358907Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:47:20.239369175Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:47:25.256079593Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:47:25.287311172Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:47:25.28743111Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:47:25.30777635Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:47:25.307821267Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:47:25.307853709Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:47:25.307862985Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:47:25.307871174Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:47:30.324719952Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:47:30.355833388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:47:30.355928315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:47:30.379321879Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:47:30.379364553Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:47:30.379379779Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:47:30.379390986Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:47:30.379399926Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:47:35.393945745Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:47:35.424814032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:47:35.424894342Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:47:35.450505433Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:47:35.450549022Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:47:35.450562516Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:47:35.45057347Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:47:35.450583456Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:47:40.467782543Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:47:40.497656531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:47:40.497766851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:47:40.522385755Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:47:40.522439781Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:47:40.522455748Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:47:40.522466764Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:47:40.522475517Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:47:45.539295081Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:47:45.568930417Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:47:45.569014721Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:47:45.589352354Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:47:45.589393495Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:47:45.589407501Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:47:45.589419034Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:47:45.589427712Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:47:50.604917788Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:47:50.633965942Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:47:50.634063203Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:47:50.658265664Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:47:50.658305929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:47:50.658319213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:47:50.658329186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:47:50.658337692Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:47:55.671692927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:47:55.701773225Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:47:55.701862888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:47:55.726594751Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:47:55.726637658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:47:55.726653657Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:47:55.726665634Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:47:55.726676535Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:48:00.742373351Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:48:00.773223926Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:48:00.773341563Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:48:00.79677376Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:48:00.796829549Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:48:00.796843277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:48:00.796853518Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:48:00.796861839Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:48:05.81105944Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:48:05.841305581Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:48:05.841388652Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:48:05.86301293Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:48:05.863055366Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:48:05.863070651Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:48:05.863081746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:48:05.863090784Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:48:10.878570116Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:48:10.909551254Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:48:10.909663102Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:48:10.933825123Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:48:10.934293787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:48:10.934504845Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:48:10.934791003Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:48:10.935005446Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:48:15.949470975Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:48:15.980533694Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:48:15.980707206Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:48:16.00012909Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:48:16.000178938Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:48:16.00019259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:48:16.000205611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:48:16.000214978Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:48:21.019025343Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:48:21.049340691Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:48:21.049448805Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:48:21.072176827Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:48:21.07221813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:48:21.072230724Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:48:21.072276778Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:48:21.072286151Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:48:26.087550142Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:48:26.114610946Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:48:26.11469432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:48:26.138670463Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:48:26.138715004Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:48:26.138728358Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:48:26.138738952Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:48:26.138747277Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:48:31.160268034Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:48:31.186442786Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:48:31.18654879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:48:31.208355726Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:48:31.208398059Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:48:31.208482237Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:48:31.208494655Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:48:31.208504872Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:48:36.223299789Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:48:36.254042282Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:48:36.254153897Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:48:36.281533006Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:48:36.281578572Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:48:36.281592359Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:48:36.2816029Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:48:36.28161206Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:48:41.299752001Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:48:41.329700108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:48:41.329809234Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:48:41.353610554Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:48:41.353666197Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:48:41.353700919Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:48:41.353711322Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:48:41.353719427Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:48:46.374586157Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:48:46.403686414Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:48:46.40378043Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:48:46.425678171Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:48:46.425739932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:48:46.425769087Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:48:46.425800619Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:48:46.425809713Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:48:51.441453192Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:48:51.473023392Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:48:51.473116466Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:48:51.497609242Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:48:51.497663644Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:48:51.497677933Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:48:51.497690609Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:48:51.497699623Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:48:56.516278517Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:48:56.544058938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:48:56.544151267Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:48:56.567893261Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:48:56.567937974Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:48:56.56797076Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:48:56.568000879Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:48:56.568011303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:49:01.586503415Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:49:01.617910913Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:49:01.61800887Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:49:01.646931692Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:49:01.646977889Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:49:01.646992022Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:49:01.647030803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:49:01.647039624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:49:06.662960836Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:49:06.694616987Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:49:06.694710359Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:49:06.716761296Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:49:06.716802707Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:49:06.716817357Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:49:06.716829419Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:49:11.737862713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:49:11.767633993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:49:11.767762128Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:49:11.78933926Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:49:11.789377953Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:49:11.789393145Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:49:11.78940446Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:49:11.789413217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:49:16.808524289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:49:16.838555429Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:49:16.838665119Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:49:16.861475788Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:49:16.861518108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:49:16.861573246Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:49:16.861585492Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:49:16.861594418Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:49:21.879358071Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:49:21.907643062Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:49:21.907754147Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:49:21.930002756Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:49:21.930115209Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:49:21.93013315Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:49:21.930173871Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:49:21.930183967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:49:26.943930716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:49:26.975785021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:49:26.975891527Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:49:26.996473071Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:49:26.996528517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:49:26.996541865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:49:26.996553538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:49:26.996562418Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:49:32.017293283Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:49:32.04819862Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:49:32.048331355Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:49:32.072364563Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:49:32.072403247Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:49:32.072490774Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:49:32.072502832Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:49:32.072512678Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:49:37.087668556Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:49:37.119226928Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:49:37.119355975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:49:37.141618358Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:49:37.141658037Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:49:37.141671009Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:49:37.141694964Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:49:37.14170302Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:49:42.159271646Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:49:42.191179531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:49:42.191300695Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:49:42.215471295Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:49:42.215514207Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:49:42.215528468Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:49:42.215539222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:49:42.215548452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:49:47.230532241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:49:47.258807618Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:49:47.258904276Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:49:47.28064161Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:49:47.280686428Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:49:47.280699967Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:49:47.280712131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:49:47.28072176Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:49:52.301695123Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:49:52.331564883Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:49:52.331651304Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:49:52.354830007Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:49:52.354871407Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:49:52.354884955Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:49:57.372485095Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:49:57.404928377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:49:57.405012116Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:49:57.42832078Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:49:57.428369821Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:49:57.428384072Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:49:57.428393477Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:49:57.428401793Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:50:02.448294963Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:50:02.493753608Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:50:02.493880573Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:50:02.52158097Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:50:02.521766542Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:50:02.521783346Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:50:02.521792922Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:50:02.521816302Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:50:07.536699968Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:50:07.564391498Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:50:07.564656165Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:50:07.5880229Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:50:07.588060401Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:50:07.588099713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:50:07.588109859Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:50:07.588118514Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:50:12.604383307Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:50:12.633165762Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:50:12.633279499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:50:12.657363246Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:50:12.657412827Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:50:12.657428805Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:50:12.657438128Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:50:12.657446493Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:50:17.675068686Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:50:17.705712158Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:50:17.705796395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:50:17.729627019Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:50:17.729674297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:50:17.729688944Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:50:17.729699183Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:50:17.729706248Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:50:22.747541763Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:50:22.777695896Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:50:22.77780437Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:50:22.799418191Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:50:22.799461314Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:50:22.799474973Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:50:22.799485411Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:50:22.799495319Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:50:27.816223714Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:50:27.846197325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:50:27.846318116Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:50:27.870155632Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:50:27.870201703Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:50:27.870217321Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:50:27.870227748Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:50:27.870363172Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T17:50:27.870617982Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:50:32.887195678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:50:32.917346562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:50:32.917437921Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:50:32.940837841Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:50:32.940881618Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:50:32.940894815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:50:32.940905463Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:50:32.940914413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:50:37.95605052Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:50:37.986805145Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:50:37.98689305Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:50:38.011872395Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:50:38.011936865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:50:38.011989662Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:50:38.012002098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:50:38.012011095Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:50:43.026932988Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:50:43.059223647Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:50:43.059324583Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:50:43.083082096Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:50:43.08313613Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:50:43.083152079Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:50:43.083163443Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:50:43.08317166Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:50:48.099666679Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:50:48.1295716Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:50:48.12966285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:50:48.153068774Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:50:48.153302731Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:50:48.153323981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:50:48.153344948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:50:48.153355736Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:50:53.17412866Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:50:53.203539348Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:50:53.203641905Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:50:53.228217623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:50:53.228271131Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:50:53.228316166Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:50:53.228326001Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:50:53.22833438Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:50:58.243716889Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:50:58.272982915Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:50:58.273097805Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:50:58.292724369Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:50:58.292766775Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:50:58.292781068Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:50:58.292792819Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:50:58.292804059Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:51:03.308298358Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:51:03.338848829Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:51:03.338938653Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:51:03.360105244Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:51:03.36014861Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:51:03.360162507Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:51:03.36017317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:51:03.360182569Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:51:08.374390665Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:51:08.404548678Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:51:08.404647958Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:51:08.425547255Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:51:08.425608521Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:51:08.425623913Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:51:08.425634676Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:51:08.425642624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:51:13.446745146Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:51:13.47842532Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:51:13.478530049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:51:13.499011338Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:51:13.49905825Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:51:13.499072557Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:51:13.499083264Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:51:13.499093631Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:51:18.517205194Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:51:18.547978428Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:51:18.548076825Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:51:18.569071204Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:51:18.569112917Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:51:18.56912605Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:51:18.569137755Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:51:18.569147665Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:51:23.587607143Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:51:23.618494768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:51:23.618576991Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:51:23.642202681Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:51:23.642265006Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:51:23.642280931Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:51:23.642291235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:51:23.642299566Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:51:28.656670989Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:51:28.685264106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:51:28.68537491Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:51:28.70613708Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:51:28.706180941Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:51:28.706194385Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:51:28.706204272Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:51:28.706214501Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:51:33.723752162Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:51:33.753404086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:51:33.753521643Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:51:33.77469822Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:51:33.774738073Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:51:33.774751738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:51:33.774763121Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:51:33.774772147Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:51:38.789713338Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:51:38.819804727Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:51:38.819898586Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:51:38.840854181Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:51:38.840915441Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:51:38.840930384Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:51:38.84093972Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:51:38.840948248Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:51:43.856062839Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:51:43.887439606Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:51:43.887550242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:51:43.908054588Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:51:43.908097687Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:51:43.908110546Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:51:43.908122942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:51:43.908132656Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:51:48.923992058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:51:48.9566872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:51:48.956816167Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:51:48.97699738Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:51:48.977053098Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:51:48.977066811Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:51:48.97707795Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:51:48.977086551Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:51:53.996890846Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:51:54.029116718Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:51:54.02922017Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:51:54.051413174Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:51:54.051453908Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:51:54.051478041Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:51:54.051489156Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:51:54.051497681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:51:59.066852045Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:51:59.096059316Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:51:59.096147589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:51:59.119725362Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:51:59.119780403Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:51:59.119794694Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:51:59.11980643Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:51:59.119814971Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:52:04.140918287Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:52:04.169472594Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:52:04.169585083Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:52:04.191857896Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:52:04.191901115Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:52:04.191914116Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:52:04.191942816Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:52:04.19195217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:52:09.208005924Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:52:09.238283729Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:52:09.238366036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:52:09.258743782Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:52:09.258788444Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:52:09.258801827Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:52:09.258812225Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:52:09.2588218Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:52:14.279195032Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:52:14.306844974Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:52:14.30694537Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:52:14.330436747Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:52:14.330476858Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:52:14.330489794Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:52:14.330501428Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:52:14.330510464Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:52:19.346326143Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:52:19.375624384Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:52:19.375713529Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:52:19.396902873Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:52:19.396962819Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:52:19.396977298Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:52:19.396986502Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:52:19.396994715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:52:24.417279022Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:52:24.44620986Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:52:24.44631895Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:52:24.469130593Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:52:24.469175342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:52:24.469188679Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:52:24.469199391Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:52:24.469207619Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:52:29.486710112Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:52:29.516727748Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:52:29.516825001Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:52:29.540591472Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:52:29.540646192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:52:29.540662773Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:52:29.540672115Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:52:29.540680352Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:52:34.557306198Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:52:34.58405463Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:52:34.58415534Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:52:34.606290798Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:52:34.606332709Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:52:34.606345863Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:52:34.606357121Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:52:34.606366679Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:52:39.624283652Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:52:39.654911004Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:52:39.655015387Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:52:39.67867103Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:52:39.678711576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:52:39.678726096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:52:39.678736721Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:52:39.678746264Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:52:44.696020526Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:52:44.727944053Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:52:44.728047863Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:52:44.751411245Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:52:44.75145143Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:52:44.751464921Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:52:44.751477146Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:52:44.75148675Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:52:49.767751012Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:52:49.79711534Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:52:49.797206067Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:52:49.816622333Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:52:49.816669495Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:52:49.816685862Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:52:49.816695489Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:52:49.81670425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:52:54.837282876Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:52:54.867261261Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:52:54.867365183Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:52:54.891001084Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:52:54.891046851Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:52:54.891059667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:52:54.89107142Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:52:54.891080961Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:52:59.906543551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:52:59.936387011Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:52:59.936583182Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:52:59.957044369Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:52:59.957085639Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:52:59.95709925Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:52:59.957111276Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:52:59.957121488Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:53:04.970061909Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:53:05.002132221Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:53:05.002229424Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:53:05.023635606Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:53:05.023679692Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:53:05.023693841Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:53:05.023704157Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:53:05.023712572Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:53:10.041554233Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:53:10.069914924Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:53:10.07000139Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:53:10.095533868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:53:10.09557593Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:53:10.095615021Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:53:10.095625556Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:53:10.095634072Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:53:15.114671733Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:53:15.145397239Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:53:15.145484889Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:53:15.168095258Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:53:15.168693944Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:53:15.168718342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:53:15.168731889Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:53:15.168744504Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:53:20.184870523Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:53:20.214166176Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:53:20.214295546Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:53:20.238885745Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:53:20.238930763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:53:20.238946979Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:53:20.238957656Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:53:20.238967473Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:53:25.256884005Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:53:25.288708935Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:53:25.288820288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:53:25.316718973Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:53:25.317263988Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:53:25.31728779Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:53:25.317301894Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:53:25.317313143Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:53:30.333337575Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:53:30.366176549Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:53:30.36627564Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:53:30.39083032Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:53:30.390890758Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:53:30.390906051Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:53:30.390938871Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:53:30.390954906Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:53:35.40495082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:53:35.434731774Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:53:35.434846969Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:53:35.459165741Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:53:35.459208026Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:53:35.459221142Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:53:35.45923324Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:53:35.459253296Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:53:40.476905442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:53:40.505146804Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:53:40.505245938Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:53:40.5282663Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:53:40.528310315Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:53:40.528325142Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:53:40.528335442Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:53:40.528343636Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:53:45.548535433Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:53:45.576058556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:53:45.576141129Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:53:45.600055479Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:53:45.600098445Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:53:45.600111744Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:53:45.600123203Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:53:45.60013247Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:53:50.618196771Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:53:50.649472477Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:53:50.649558811Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:53:50.672854375Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:53:50.672916224Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:53:50.672930578Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:53:50.672987859Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:53:50.672998292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:53:55.693948217Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:53:55.723858785Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:53:55.723968151Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:53:55.746738479Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:53:55.746778566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:53:55.746824163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:53:55.746847475Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:53:55.746855963Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:54:00.763290281Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:54:00.79309658Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:54:00.793215696Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:54:00.814402697Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:54:00.814444981Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:54:00.814459319Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:54:00.814470407Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:54:00.814480292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:54:05.827941065Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:54:05.859742909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:54:05.859830394Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:54:05.884294217Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:54:05.884335064Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:54:05.884348776Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:54:05.884360334Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:54:05.884368846Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:54:10.905140413Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:54:10.934675592Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:54:10.934764459Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:54:10.959353191Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:54:10.959392691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:54:10.959406528Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:54:10.959417979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:54:10.959427867Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:54:15.978315485Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:54:16.008707231Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:54:16.008825569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:54:16.032975152Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:54:16.033016852Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:54:16.033030835Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:54:16.033042116Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:54:16.033052037Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:54:21.055284405Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:54:21.084306826Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:54:21.084489378Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:54:21.10405126Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:54:21.104093172Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:54:21.104106314Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:54:21.104117498Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:54:26.1173929Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:54:26.147418519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:54:26.147526288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:54:26.176153873Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:54:26.176202665Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:54:26.176218572Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:54:26.176229927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:54:26.176387121Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:54:31.191294826Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:54:31.219115498Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:54:31.219202429Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:54:31.244341608Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:54:31.244489168Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:54:31.244507618Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:54:31.244519803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:54:31.244530062Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:54:36.260923353Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:54:36.288197601Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:54:36.288296914Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:54:36.312109095Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:54:36.312150748Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:54:36.312166143Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:54:36.312186165Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:54:36.31219455Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:54:41.334646906Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:54:41.361834126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:54:41.361924Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:54:41.383073585Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:54:41.383117597Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:54:41.383131408Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:54:41.383143907Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:54:41.383152522Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:54:46.401911168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:54:46.432060575Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:54:46.43215968Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:54:46.45596115Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:54:46.456003687Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:54:46.456053303Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:54:46.456063005Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:54:46.456071762Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:54:51.474229629Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:54:51.506416669Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:54:51.50651325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:54:51.526032139Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:54:51.526074699Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:54:51.526087208Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:54:51.526098083Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:54:51.526107931Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:54:56.540565523Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:54:56.570529065Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:54:56.570620511Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:54:56.595742529Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:54:56.59578526Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:54:56.595798267Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:54:56.595809934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:54:56.595819615Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:55:01.678859119Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:55:01.81788215Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:55:01.817980405Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:55:02.300659733Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:55:02.30073252Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:55:02.300750118Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:55:02.300762316Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:55:02.300771193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:55:07.315775352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:55:07.34672828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:55:07.346823804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:55:07.366579086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:55:07.366621754Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:55:07.366635371Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:55:07.366646863Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:55:07.36665532Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:55:12.382445286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:55:12.412615915Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:55:12.412723989Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:55:12.434465429Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:55:12.434508818Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:55:12.434521815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:55:12.434533307Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:55:17.448842522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:55:17.477941478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:55:17.478066841Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:55:17.503214141Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:55:17.503282247Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:55:17.503297946Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:55:17.503308204Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:55:17.503317021Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:55:22.523171701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:55:22.550896719Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:55:22.550994277Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:55:22.573705458Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:55:22.573762824Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:55:22.573776646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:55:22.573787649Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:55:22.573795624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:55:27.586777797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:55:27.616911872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:55:27.617005339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:55:27.642613403Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:55:27.642656379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:55:27.642668905Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:55:27.642680026Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:55:27.642688867Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:55:32.662349246Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:55:32.69309285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:55:32.693211236Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:55:32.714094781Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:55:32.714136296Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:55:32.714158048Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:55:32.71416837Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:55:32.714177479Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:55:37.728102481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:55:37.75852604Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:55:37.758638645Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:55:37.784627567Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:55:37.784674126Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:55:37.784688945Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:55:37.784699603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:55:37.784708965Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:55:48.411069967Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:55:48.479864249Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:55:48.479972202Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:55:48.570053087Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:55:48.570085538Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:55:48.570110724Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:55:48.570123741Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:55:48.570134825Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:55:53.588503701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:55:53.617268296Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:55:53.617355563Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:55:53.638570025Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:55:53.638626598Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:55:53.638640778Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:55:53.638651083Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:55:53.638659395Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:55:58.654062789Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:55:58.683117363Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:55:58.683205194Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:55:58.707935121Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:55:58.708327462Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:55:58.708349541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:55:58.708385377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:55:58.708397003Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:56:03.724979883Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:56:03.754388937Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:56:03.754486345Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:56:03.778424124Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:56:03.778465034Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:56:03.778479461Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:56:03.778489961Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:56:03.778499882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:56:08.793282503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:56:08.822109271Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:56:08.822219263Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:56:08.842916895Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:56:08.842957555Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:56:08.842972532Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:56:08.842984475Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:56:08.842993313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:56:13.859931927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:56:13.890342922Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:56:13.890425563Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:56:13.912796048Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:56:13.912860154Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:56:13.912875391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:56:13.912884937Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:56:13.912893331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:56:18.926040271Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:56:18.956327847Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:56:18.956541583Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:56:18.979480431Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:56:18.979524166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:56:18.979538201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:56:18.979550559Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:56:18.979559942Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:56:24.001711298Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:56:24.030199117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:56:24.030317421Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:56:24.055574151Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:56:24.05561801Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:56:24.055630771Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:56:24.055642195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:56:24.055652467Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:56:29.071940955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:56:29.10119825Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:56:29.101297114Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:56:29.124069328Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:56:29.124108218Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:56:29.124120979Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:56:29.124131901Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:56:29.124142035Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:56:34.144159334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:56:34.173999396Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:56:34.174084525Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:56:34.198046326Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:56:34.198092576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:56:34.198108239Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:56:34.198118066Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:56:34.19812546Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:56:39.212954038Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:56:39.243120505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:56:39.243248037Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:56:39.263339917Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:56:39.263382805Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:56:39.263396529Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:56:39.263407458Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:56:39.263417927Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:56:44.286860638Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:56:44.316339162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:56:44.316532744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:56:44.342688711Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:56:44.342732085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:56:44.342745409Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:56:44.342781006Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:56:44.342790117Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:56:51.657498757Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:56:51.750789609Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:56:51.750894278Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:56:51.843971403Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:56:51.844012921Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:56:51.844025978Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:56:51.844037027Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:56:51.844046288Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:56:56.861279354Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:56:56.890630474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:56:56.890710689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:56:56.911389572Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:56:56.911433148Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:56:56.911447237Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:56:56.911459397Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:56:56.911468522Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:57:01.939717993Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:57:02.00010597Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:57:02.000209525Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:57:02.031498559Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:57:02.031545932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:57:02.031560364Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:57:02.031570082Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:57:02.031578373Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:57:07.04801075Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:57:07.077686018Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:57:07.077790837Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:57:07.101402635Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:57:07.101446659Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:57:07.101460349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:57:07.101471456Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:57:07.101480378Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:57:12.1197676Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:57:12.149704341Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:57:12.149804016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:57:12.171669557Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:57:12.171712431Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:57:12.171751453Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:57:12.171781348Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:57:12.17188409Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:57:17.188907339Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:57:17.21835817Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:57:17.21844438Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:57:17.242917302Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:57:17.242974944Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:57:17.242989488Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:57:17.243031486Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:57:17.243040308Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:57:22.258619027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:57:22.287749429Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:57:22.287855781Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:57:22.31306266Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:57:22.313109874Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:57:22.313124464Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:57:22.313134541Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:57:22.313144939Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:57:27.33032502Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:57:27.359506971Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:57:27.359617395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:57:27.382354846Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:57:27.382398141Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:57:27.382423008Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:57:27.382432824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:57:27.382441635Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:57:32.396913542Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:57:32.428970197Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:57:32.429084266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:57:32.449697115Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:57:32.449736663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:57:32.449750129Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:57:32.449760869Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:57:32.44976974Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:57:37.467020292Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:57:37.496483938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:57:37.496601019Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:57:37.521312406Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:57:37.521353287Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:57:37.521367056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:57:42.538191432Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:57:42.567783019Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:57:42.567892322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:57:42.591746187Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:57:42.591788255Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:57:42.591801006Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:57:42.591811639Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:57:42.591821422Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:57:47.606349463Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:57:47.635034695Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:57:47.635136689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:57:47.655207418Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:57:47.655263058Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:57:47.655276895Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:57:47.655287124Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:57:47.65529542Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:57:52.669620833Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:57:52.69914813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:57:52.699231252Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:57:52.723331857Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:57:52.723397531Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:57:52.723412007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:57:52.723421935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:57:52.723429811Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:57:57.73851718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:57:57.768505636Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:57:57.768626409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:57:57.792334549Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:57:57.792380083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:57:57.792393658Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:57:57.79241099Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:57:57.792420777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:58:02.807105616Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:58:02.837101216Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:58:02.837208091Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:58:02.860801063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:58:02.860864711Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:58:02.860879125Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:58:02.860889083Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:58:02.860897707Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:58:07.877460807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:58:07.910105183Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:58:07.910204458Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:58:07.937475385Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:58:07.937522482Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:58:07.937536927Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:58:07.937546473Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:58:07.937553107Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:58:12.952735463Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:58:12.985554546Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:58:12.985680626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:58:13.007090209Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:58:13.007135804Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:58:13.007151351Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:58:13.007191359Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:58:13.007218719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:58:18.027335631Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:58:18.05668867Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:58:18.056775049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:58:18.08021493Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:58:18.080269283Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:58:18.080283724Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:58:18.08029456Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:58:18.080303218Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:58:23.096104675Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:58:23.1281202Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:58:23.128232132Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:58:23.149597704Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:58:23.149670053Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:58:23.149685879Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:58:23.149696262Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:58:23.149704416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:58:28.168105226Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:58:28.195892127Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:58:28.196012708Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:58:28.218987984Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:58:28.219430495Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:58:28.219456214Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:58:28.219469184Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:58:28.219477256Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:58:33.237173432Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:58:33.269008699Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:58:33.269116959Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:58:33.294649457Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:58:33.294693347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:58:33.294707036Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:58:33.294717026Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:58:33.294726997Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:58:38.312152011Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:58:38.345105866Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:58:38.34529669Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:58:38.371946167Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:58:38.371991761Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:58:38.372005107Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:58:38.37201716Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:58:38.372027307Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:58:43.388958448Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:58:43.420333713Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:58:43.420602851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:58:43.441318751Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:58:43.441361078Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:58:43.441375814Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:58:43.441386576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:58:48.465486769Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:58:48.492746892Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:58:48.49284329Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:58:48.514333808Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:58:48.514376913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:58:48.514390025Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:58:48.51440079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:58:48.51441005Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:58:53.528382573Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:58:53.561044757Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:58:53.561127617Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:58:53.587384662Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:58:53.587428033Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:58:53.587440664Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:58:53.587452196Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:58:53.587461682Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:58:58.604910769Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:58:58.634663283Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:58:58.63474749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:58:58.660457189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:58:58.660521387Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:58:58.660537511Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:58:58.660570574Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:58:58.660582501Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:59:03.678299768Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:59:03.70772091Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:59:03.707856309Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:59:03.728864898Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:59:03.728911217Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:59:03.728925913Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:59:03.728938335Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:59:03.728946909Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:59:08.747232483Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:59:08.776779963Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:59:08.776874161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:59:08.799998554Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:59:08.800037911Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:59:08.800075695Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:59:08.800105726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:59:08.80023129Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:59:13.815801042Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:59:13.847859629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:59:13.847965756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:59:13.872962717Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:59:13.87301558Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:59:13.873030275Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:59:18.893284988Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:59:18.920540417Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:59:18.920624074Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:59:18.944076515Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:59:18.944140183Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:59:18.944154836Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:59:18.94416395Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:59:18.94417232Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:59:23.958864607Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:59:23.990413348Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:59:23.990497282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:59:24.01595608Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:59:24.016013338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:59:24.016027828Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:59:24.016037977Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:59:24.016046123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:59:29.032882898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:59:29.063551112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:59:29.063666874Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:59:29.086815784Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:59:29.086859026Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:59:29.086872992Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:59:29.086909747Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:59:29.086919581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:59:34.102191617Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:59:34.132058516Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:59:34.132148323Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:59:34.152087974Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:59:34.152131504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:59:34.152146536Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:59:34.152157365Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:59:34.152167497Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:59:39.16985316Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:59:39.200198507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:59:39.200327842Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:59:39.225436538Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:59:39.225477764Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:59:39.225508007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:59:39.225518057Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:59:39.225526489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:59:44.242537382Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:59:44.272703946Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:59:44.272790355Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:59:44.296335452Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:59:44.296377444Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:59:44.29639085Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:59:44.296478218Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:59:44.296489024Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:59:49.310464743Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:59:49.339738431Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:59:49.339823206Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:59:49.365355975Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:59:49.365398342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:59:49.365412382Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:59:49.36542567Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:59:49.365435194Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:59:54.381972392Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:59:54.411395543Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:59:54.411508048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:59:54.435317045Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:59:54.435371822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:59:54.435385677Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:59:54.435416135Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:59:54.435425702Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T17:59:59.452346573Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T17:59:59.483625791Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T17:59:59.48372362Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T17:59:59.506034345Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T17:59:59.506102332Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T17:59:59.506117732Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T17:59:59.506128417Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T17:59:59.506137933Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:00:04.528296827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:00:04.567734233Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:00:04.567836316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:00:04.622123121Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:00:04.622286394Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:00:04.622313787Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:00:04.622325376Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:00:04.622333534Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:00:09.641286739Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:00:09.677321098Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:00:09.677441345Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:00:09.702248165Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:00:09.702301629Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:00:09.702318264Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:00:09.702331478Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:00:09.702340858Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:00:14.725685962Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:00:14.763645325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:00:14.764102588Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:00:14.794966209Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:00:14.795013441Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:00:14.795027723Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:00:14.79503772Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:00:14.795046264Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:00:19.812421113Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:00:19.844269213Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:00:19.844370465Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:00:19.866822037Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:00:19.866868777Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:00:19.866882832Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:00:19.866891197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:00:19.866897734Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:00:24.885282563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:00:24.913469057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:00:24.913594614Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:00:24.936862069Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:00:24.936902595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:00:24.936915281Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:00:24.936925859Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:00:24.936936459Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:00:29.957282795Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:00:29.986048387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:00:29.986154303Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:00:30.008018443Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:00:30.008075027Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:00:30.008090324Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:00:30.008128823Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:00:30.008138769Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:00:35.024280079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:00:35.053990537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:00:35.054076713Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:00:35.0769405Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:00:35.07698133Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:00:35.077015619Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:00:35.077048225Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:00:35.077057312Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:00:40.098021637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:00:40.127222929Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:00:40.127329435Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:00:40.147818199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:00:40.14786257Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:00:40.147876427Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:00:40.147886082Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:00:40.147894764Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:00:45.165958936Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:00:45.195722871Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:00:45.195840219Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:00:45.216928007Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:00:45.21698521Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:00:45.216999852Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:00:45.217009748Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:00:45.21701802Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:00:50.239580691Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:00:50.270257353Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:00:50.270365329Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:00:50.292365339Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:00:50.292527721Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:00:50.292545346Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:00:50.292555803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:00:50.292565839Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:00:55.308902014Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:00:55.337346075Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:00:55.3374666Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:00:55.359950233Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:00:55.35999227Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:01:00.37643246Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:01:00.407493555Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:01:00.407581279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:01:00.432718612Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:01:00.432767209Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:01:00.432782049Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:01:00.432824071Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:01:00.432834433Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:01:05.450164106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:01:05.478287571Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:01:05.478389421Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:01:05.506200195Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:01:05.506250997Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:01:05.506266971Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:01:05.506279251Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:01:05.506288799Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:01:10.523973532Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:01:10.555437143Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:01:10.555547194Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:01:10.575260384Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:01:10.57534129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:01:10.57535682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:01:10.575407131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:01:10.575418027Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:01:15.593328322Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:01:15.623158848Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:01:15.623256701Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:01:15.646708586Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:01:15.646753786Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:01:15.64676748Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:01:15.646779047Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:01:15.646787943Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:01:20.665828819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:01:20.695308967Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:01:20.695421967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:01:20.721672155Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:01:20.721716257Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:01:20.72175996Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:01:20.721770127Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:01:20.721779177Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:01:25.818385857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:01:25.880894104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:01:25.883399928Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:01:25.912621555Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:01:25.912666135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:01:25.912681566Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:01:25.912693928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:01:25.912705441Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:01:30.96312693Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:01:31.031397531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:01:31.031966195Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:01:31.067000485Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:01:31.067049907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:01:31.067065348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:01:31.067078161Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:01:31.067088935Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:01:36.097977513Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:01:36.142574042Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:01:36.142665116Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:01:36.173533761Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:01:36.173581599Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:01:36.173596715Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:01:36.173609797Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:01:36.17362232Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:01:41.306273714Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:01:41.375717203Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:01:41.379044706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:01:41.407625849Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:01:41.407765774Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:01:41.40778099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:01:41.407792862Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:01:41.40780323Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:01:46.434463817Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:01:46.463880787Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:01:46.463962978Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:01:46.486267352Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:01:46.486307541Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:01:46.486321346Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:01:46.486331638Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:01:46.486341059Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:01:51.503008015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:01:51.533703577Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:01:51.533828668Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:01:51.553944885Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:01:51.554000325Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:01:51.554016196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:01:51.554026969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:01:51.554034948Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:01:56.569778822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:01:56.597650161Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:01:56.597760225Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:01:56.618338142Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:01:56.61839039Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:01:56.61840683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:01:56.618417148Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:01:56.618436597Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:02:01.639273601Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:02:01.720170667Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:02:01.720295273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:02:01.979509076Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:02:01.979567283Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:02:01.97958215Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:02:01.979593883Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:02:01.97960336Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:02:06.994778903Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:02:07.023693191Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:02:07.023811151Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:02:07.049611789Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:02:07.049668464Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:02:07.049684419Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:02:07.049717466Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:02:07.049735398Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:02:12.067281716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:02:12.097647688Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:02:12.09777405Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:02:12.121416733Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:02:12.121460399Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:02:12.121473084Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:02:12.121484075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:02:12.12149196Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:02:17.139066658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:02:17.169845793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:02:17.169947103Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:02:17.194546217Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:02:17.194596694Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:02:17.194611735Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:02:17.194699087Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:02:17.194709589Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:02:22.208909336Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:02:22.241278087Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:02:22.241412092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:02:22.263690898Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:02:22.263735624Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:02:22.263750706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:02:22.2637604Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:02:22.26376919Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:02:27.279272121Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:02:27.308474398Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:02:27.308601772Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:02:27.330592291Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:02:27.330636275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:02:27.330651375Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:02:27.330661591Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:02:27.330670681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:02:32.345734855Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:02:32.376018473Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:02:32.376125361Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:02:32.397518876Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:02:32.397561025Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:02:32.397574788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:02:32.397585198Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:02:32.397594408Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:02:37.412071966Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:02:37.442123809Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:02:37.442227587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:02:37.462996072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:02:37.46303946Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:02:37.463052819Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:02:42.47867616Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:02:42.509824241Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:02:42.509936498Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:02:42.534709071Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:02:42.534751156Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:02:42.534764201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:02:42.534775652Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:02:42.534785755Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:02:47.553712329Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:02:47.584966062Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:02:47.585087071Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:02:47.61183611Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:02:47.61187536Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:02:47.61188873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:02:47.611900077Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:02:47.611926248Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:02:52.62899941Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:02:52.658078971Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:02:52.658176006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:02:52.682049005Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:02:52.682090722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:02:52.68211462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:02:52.682125837Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:02:52.682134251Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:02:57.698579824Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:02:57.730533497Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:02:57.730628486Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:02:57.751556743Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:02:57.751599317Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:02:57.751612819Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:02:57.75162428Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:02:57.751634704Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:03:02.768334855Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:03:02.799375524Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:03:02.799462211Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:03:02.821092902Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:03:02.821532137Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:03:02.821555099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:03:02.821569257Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:03:02.821581191Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:03:07.836485559Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:03:07.867482807Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:03:07.867590546Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:03:07.893096427Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:03:07.893141166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:03:07.893156117Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:03:07.893168923Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:03:07.893177719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:03:12.90827246Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:03:12.941156244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:03:12.941289872Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:03:12.967362081Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:03:12.967404421Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:03:12.96741761Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:03:12.967428658Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:03:12.967439081Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:03:17.981839762Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:03:18.011092768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:03:18.011214096Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:03:18.035897968Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:03:18.035937402Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:03:18.035949846Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:03:18.03596045Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:03:18.035971223Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:03:23.049383366Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:03:23.081404866Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:03:23.081498487Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:03:23.103614773Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:03:23.103654787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:03:23.103667755Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:03:23.103679987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:03:23.103688644Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:03:28.12062544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:03:28.14951097Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:03:28.149626107Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:03:28.17334652Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:03:28.173404427Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:03:28.173418344Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:03:28.173429111Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:03:28.173437419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:03:33.192776195Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:03:33.220832828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:03:33.220923689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:03:33.245836238Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:03:33.245890193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:03:33.245906345Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:03:33.24591622Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:03:33.245924211Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:03:38.266277249Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:03:38.295970445Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:03:38.296061072Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:03:38.321096541Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:03:38.321138629Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:03:38.321154411Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:03:38.32116618Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:03:38.321175405Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:03:43.339297923Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:03:43.367168217Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:03:43.367269719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:03:43.388567886Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:03:43.388609877Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:03:43.388649065Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:03:43.38865949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:03:43.388667681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:03:48.406478206Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:03:48.435402618Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:03:48.435896278Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:03:48.459792845Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:03:48.460209893Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:03:48.460499938Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:03:48.460833217Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T18:03:48.460929952Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:03:48.460996646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:03:53.477711378Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:03:53.505606751Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:03:53.505728852Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:03:53.531504222Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:03:53.531545008Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:03:53.531558627Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:03:53.531569322Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:03:53.531578192Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:03:58.549524096Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:03:58.578708233Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:03:58.578803979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:03:58.603882721Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:03:58.603923898Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:03:58.603936959Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:03:58.603949853Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:03:58.603958792Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:04:03.618228632Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:04:03.648995065Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:04:03.649088143Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:04:03.676057303Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:04:03.676107788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:04:03.676122666Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:04:03.676133839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:04:03.676144059Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:04:08.693870173Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:04:08.724019719Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:04:08.724122943Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:04:08.747821499Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:04:08.747863455Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:04:08.747877607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:04:08.747900983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:04:08.747909491Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:04:13.766296777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:04:13.795851553Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:04:13.795955Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:04:13.820839367Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:04:13.820889507Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:04:13.820925149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:04:13.820958322Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:04:13.820967973Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:04:18.839802698Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:04:18.868894128Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:04:18.869431886Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:04:18.891533393Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:04:18.891575073Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:04:18.891587747Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:04:18.891600231Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:04:18.891609823Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:04:23.908599783Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:04:23.941084887Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:04:23.941170797Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:04:23.962722354Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:04:23.962767098Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:04:23.962780358Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:04:23.96279085Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:04:23.962801768Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:04:28.980485202Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:04:29.009950295Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:04:29.010046513Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:04:29.030975807Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:04:29.031017178Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:04:29.031030306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:04:29.031040976Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:04:29.031050963Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:04:34.049285398Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:04:34.08021249Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:04:34.080329449Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:04:34.102813181Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:04:34.102856508Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:04:34.102870449Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:04:34.102880149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:04:34.102889171Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:04:39.121313872Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:04:39.151015895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:04:39.151117534Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:04:39.171524067Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:04:39.171564658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:04:39.171578178Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:04:39.171588435Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:04:39.171596757Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:04:44.190302392Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:04:44.220797806Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:04:44.220879169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:04:44.242883382Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:04:44.242927236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:04:44.242941135Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:04:44.242952426Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:04:44.242961584Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:04:49.258308327Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:04:49.287897128Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:04:49.28798149Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:04:49.308928831Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:04:49.308982807Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:04:49.308997259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:04:49.309007416Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:04:49.30901596Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:04:54.321395047Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:04:54.352749463Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:04:54.352868558Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:04:54.375628015Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:04:54.375668134Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:04:54.375680561Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:04:54.375690528Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:04:54.375698697Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:04:59.396466475Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:04:59.425977084Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:04:59.426087744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:04:59.448171488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:04:59.448213515Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:04:59.448227268Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:04:59.44825715Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:04:59.448265945Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:05:04.468070814Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:05:04.497487164Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:05:04.497577564Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:05:04.521489074Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:05:04.521536013Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:05:04.521552145Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:05:04.521561979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:05:04.521569062Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:05:09.538135167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:05:09.568647892Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:05:09.568735219Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:05:09.591560786Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:05:09.591603316Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:05:09.591616344Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:05:09.591626513Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:05:09.591636592Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:05:14.608942585Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:05:14.639994719Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:05:14.640082221Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:05:14.65970155Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:05:14.660073335Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:05:14.660094255Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:05:14.660107032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:05:14.660118476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:05:19.68191016Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:05:19.712860892Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:05:19.712962191Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:05:19.737461973Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:05:19.737502814Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:05:19.737515684Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:05:19.73752615Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:05:19.737536135Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:05:24.752590755Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:05:24.781190675Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:05:24.781319552Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:05:24.806078985Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:05:24.806118274Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:05:24.806132146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:05:24.806143795Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:05:24.80615345Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:05:29.824076072Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:05:29.853120975Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:05:29.853227262Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:05:29.876892164Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:05:29.876935462Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:05:29.876949058Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:05:29.876960717Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:05:29.876971219Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:05:34.891303079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:05:34.921882055Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:05:34.921985297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:05:34.945049978Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:05:34.945095563Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:05:34.945111091Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:05:34.945122966Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:05:34.945132709Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:05:39.965478584Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:05:39.995517813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:05:39.995602101Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:05:40.018186412Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:05:40.018230596Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:05:40.018256561Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:05:40.018267844Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:05:40.018276958Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:05:45.037762557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:05:45.067608054Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:05:45.067718787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:05:45.087828841Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:05:45.087868916Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:05:45.087882268Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:05:45.087894573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:05:45.0879041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:05:50.108536073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:05:50.139156661Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:05:50.139290687Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:05:50.159183189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:05:50.159226025Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:05:50.159251563Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:05:50.15929159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:05:50.159300355Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:05:55.175533142Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:05:55.206294183Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:05:55.206415883Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:05:55.230967386Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:05:55.231029157Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:05:55.231043667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:05:55.231053099Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:05:55.231062531Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:06:00.247110506Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:06:00.275433041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:06:00.275531358Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:06:00.297439339Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:06:00.297479033Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:06:00.297493863Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:06:00.297505206Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:06:00.297515626Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:06:05.314642466Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:06:05.345512383Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:06:05.345650779Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:06:05.372817134Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:06:05.372857753Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:06:05.372871278Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:06:05.372883984Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:06:05.372893956Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:06:10.394292998Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:06:10.423041193Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:06:10.423157291Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:06:10.445522298Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:06:10.445930352Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:06:10.446082721Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:06:10.446185381Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:06:10.446942202Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:06:15.464671162Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:06:15.494317882Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:06:15.494428946Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:06:15.522141636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:06:15.522182419Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:06:15.522195195Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:06:15.522206051Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:06:15.522216521Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:06:20.541295907Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:06:20.570650011Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:06:20.570763102Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:06:20.595806883Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:06:20.595864984Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:06:20.595878752Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:06:20.595888115Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:06:20.595896906Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:06:25.619995461Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:06:25.650687324Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:06:25.650776254Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:06:25.671266972Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:06:25.671311426Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:06:25.671325043Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:06:25.671334Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:06:25.671343007Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:06:30.691296308Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:06:30.719381602Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:06:30.719500699Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:06:30.740988374Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:06:30.741031875Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:06:30.741045359Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:06:30.741057618Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:06:30.74106763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:06:35.756368303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:06:35.784780279Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:06:35.784898399Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:06:35.806057499Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:06:35.806097861Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:06:40.82729253Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:06:40.855119112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:06:40.855224842Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:06:40.87464539Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:06:40.874707045Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:06:40.874721905Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:06:40.874731106Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:06:40.874739231Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:06:45.891631955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:06:45.919454651Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:06:45.919559148Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:06:45.945964845Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:06:45.946005054Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:06:45.946018831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:06:45.946028991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:06:45.946037406Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:06:50.968552927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:06:50.999039988Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:06:50.999125239Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:06:51.021708114Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:06:51.021749321Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:06:51.021762446Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:06:51.021774203Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:06:51.021783459Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:06:56.040764097Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:06:56.070469555Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:06:56.070562793Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:06:56.097074616Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:06:56.097115583Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:06:56.097128798Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:07:01.115728833Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:07:01.148024887Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:07:01.148142059Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:07:01.173115066Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:07:01.17315858Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:07:01.173172481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:07:01.173183426Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:07:01.17319728Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:07:06.189548075Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:07:06.218868Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:07:06.218954302Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:07:06.243580864Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:07:06.24362699Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:07:06.243643394Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:07:06.243654155Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:07:06.243670399Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:07:11.262530257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:07:11.292585259Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:07:11.29267334Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:07:11.315518498Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:07:11.315556142Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:07:11.315570431Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:07:11.315580124Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:07:16.335288035Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:07:16.363609691Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:07:16.363724388Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:07:16.388134694Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:07:16.388176584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:07:16.388190127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:07:16.388199412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:07:16.38821664Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:07:21.405995723Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:07:21.438605107Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:07:21.438695421Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:07:21.463338593Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:07:21.46338249Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:07:21.463396425Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:07:21.463407104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:07:21.463416929Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:07:26.478373618Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:07:26.50793561Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:07:26.50804385Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:07:26.531718691Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:07:26.531757034Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:07:26.531770289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:07:26.531781598Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:07:26.53179153Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:07:31.546619058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:07:31.577421686Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:07:31.577528518Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:07:31.600186045Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:07:31.600226639Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:07:31.600251214Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:07:36.615600958Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:07:36.646185696Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:07:36.64631288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:07:36.666502963Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:07:36.666545356Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:07:36.666558483Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:07:36.666568858Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:07:36.666577559Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:07:41.685295357Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:07:41.714293054Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:07:41.714399101Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:07:41.736680744Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:07:41.736737746Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:07:41.736762458Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:07:41.736811192Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:07:41.736820904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:07:46.75632514Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:07:46.784812248Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:07:46.784913188Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:07:46.808665935Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:07:46.808706826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:07:46.808719631Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:07:46.80873029Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:07:46.808738561Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:07:51.825455066Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:07:51.856150535Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:07:51.856268708Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:07:51.880344997Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:07:51.880456973Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:07:51.880477182Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:07:51.880488427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:07:51.880497856Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:07:56.89503662Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:07:56.926065807Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:07:56.926150664Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:07:56.949304115Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:07:56.949346374Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:07:56.949384397Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:07:56.949394163Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:07:56.949402236Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:08:01.987120554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:08:02.027337256Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:08:02.027459672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:08:02.05390504Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:08:02.053947787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:08:02.053963765Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:08:02.053974517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:08:02.053984269Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:08:07.073361197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:08:07.106121294Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:08:07.106250411Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:08:07.12885177Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:08:07.128901387Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:08:07.128915524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:08:07.128926008Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:08:12.145651017Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:08:12.175715678Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:08:12.175799447Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:08:12.198792521Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:08:12.198835273Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:08:12.198848109Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:08:12.198859689Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:08:12.198869533Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:08:17.216108773Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:08:17.246260479Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:08:17.24636026Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:08:17.271959992Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:08:17.271998813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:08:17.272035618Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:08:17.272168829Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:08:17.272182473Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:08:22.289679913Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:08:22.319830951Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:08:22.319924619Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:08:22.342675478Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:08:22.342752921Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:08:22.342769541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:08:22.342822303Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:08:22.342832258Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:08:27.359152641Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:08:27.388356956Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:08:27.388581817Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:08:27.414173765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:08:27.414214947Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:08:27.414228984Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:08:27.414251105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:08:27.414260202Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:08:32.431268221Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:08:32.46063995Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:08:32.460747003Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:08:32.485755658Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:08:32.485794789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:08:32.485809167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:08:32.485819563Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:08:32.485829431Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:08:37.501380223Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:08:37.531491794Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:08:37.531589354Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:08:37.552662611Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:08:37.552707568Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:08:37.552720329Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:08:37.552731675Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:08:37.552740304Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:08:42.56836368Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:08:42.599255982Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:08:42.599358453Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:08:42.62172194Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:08:42.621763287Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:08:42.621776321Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:08:42.621798073Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:08:42.621806726Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:08:47.640954402Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:08:47.669541571Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:08:47.66965137Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:08:47.68933374Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:08:47.68973502Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:08:47.689757135Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:08:47.689781627Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:08:47.689793218Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:08:52.704111624Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:08:52.736520727Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:08:52.736617925Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:08:52.759297599Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:08:52.759334676Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:08:52.759347522Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:08:52.759380532Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:08:52.75938941Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:08:57.777641485Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:08:57.806886972Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:08:57.806993384Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:08:57.83318489Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:08:57.833224364Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:08:57.833251047Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:08:57.833279962Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:08:57.833289652Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:09:02.848564162Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:09:02.882973302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:09:02.883069317Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:09:02.905737819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:09:02.905796733Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:09:02.905812682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:09:02.905857909Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:09:02.905868189Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:09:07.923693986Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:09:07.954731598Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:09:07.954848428Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:09:07.978057801Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:09:07.97809774Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:09:07.978110841Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:09:07.978121986Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:09:07.978132587Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:09:12.993576446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:09:13.023165639Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:09:13.02328615Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:09:13.049824805Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:09:13.049882868Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:09:13.049899676Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:09:13.04993203Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:09:13.049957997Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:09:18.070137375Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:09:18.097671031Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:09:18.097773162Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:09:18.121571982Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:09:18.121615679Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:09:18.121629199Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:09:18.121641276Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:09:18.12165123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:09:23.136346686Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:09:23.166191295Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:09:23.166298474Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:09:23.186401859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:09:23.186444825Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:09:23.186458644Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:09:23.186469771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:09:23.186479388Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:09:28.204525376Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:09:28.234752632Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:09:28.234882821Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:09:28.258709689Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:09:28.258761539Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:09:28.258776684Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:09:28.258786905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:09:28.258795354Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:09:33.275697512Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:09:33.307362042Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:09:33.307475162Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:09:33.332142872Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:09:33.332200727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:09:33.332264642Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:09:33.332276899Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:09:33.332285375Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:09:38.347177618Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:09:38.378398028Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:09:38.378509997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:09:38.405368627Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:09:38.405424906Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:09:38.405440847Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:09:38.405503258Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:09:38.405513298Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:09:43.424374732Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:09:43.45496435Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:09:43.45507963Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:09:43.474831563Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:09:43.474887215Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:09:43.474901508Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:09:43.474911243Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:09:43.474919402Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:09:48.494620998Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:09:48.526952162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:09:48.527041888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:09:48.551492624Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:09:48.55153735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:09:48.551551807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:09:48.551563244Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:09:48.551573184Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:09:53.571952795Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:09:53.599729812Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:09:53.599859225Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:09:53.619541279Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:09:53.619586232Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:09:53.61959986Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:09:53.619609966Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:09:53.619617957Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:09:58.637742008Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:09:58.66767291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:09:58.667788977Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:09:58.69580144Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:09:58.695841839Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:09:58.69585555Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:09:58.695905804Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:09:58.695915776Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:10:03.712547409Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:10:03.744793623Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:10:03.74491131Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:10:03.767011461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:10:03.767055966Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:10:03.767069327Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:10:03.767081133Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:10:03.767090669Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:10:08.787317174Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:10:08.816207716Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:10:08.816327749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:10:08.842076104Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:10:08.842117524Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:10:08.842130185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:10:08.842140176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:10:08.84214901Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:10:13.859003891Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:10:13.889570208Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:10:13.88968485Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:10:13.914405594Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:10:13.914446863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:10:13.914459512Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:10:13.914470496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:10:13.914480193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:10:18.931298703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:10:18.960970243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:10:18.961082237Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:10:18.988151524Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:10:18.988196075Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:10:18.988209181Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:10:18.988219801Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:10:18.988228472Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:10:24.003680056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:10:24.034784274Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:10:24.034871064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:10:24.055723296Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:10:24.0557681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:10:24.055782143Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:10:24.055803232Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:10:24.055811934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:10:29.074822151Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:10:29.105039641Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:10:29.105146449Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:10:29.128855808Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:10:29.1288951Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:10:29.128933779Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:10:29.128944583Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:10:29.128953077Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:10:34.148087736Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:10:34.178151391Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:10:34.178268185Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:10:34.199571907Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:10:34.199611782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:10:34.199624552Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:10:34.199636634Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:10:34.199646529Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:10:39.217513168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:10:39.24772892Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:10:39.247829553Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:10:39.268943228Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:10:39.268990393Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:10:39.269006815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:10:39.269035965Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:10:39.269047384Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:10:44.288862062Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:10:44.329963862Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:10:44.330089535Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:10:44.352258299Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:10:44.352297306Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:10:44.352310609Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:10:44.352321526Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:10:44.35233126Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:10:49.372634085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:10:49.400914425Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:10:49.401019314Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:10:49.422298417Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:10:49.422339781Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:10:49.422353203Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:10:49.422362361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:10:49.422371846Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:10:54.439623916Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:10:54.470037822Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:10:54.470171977Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:10:54.490763377Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:10:54.490802508Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:10:54.490816278Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:10:54.4908281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:10:54.490836182Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:10:59.507545052Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:10:59.53932235Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:10:59.539426289Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:10:59.564782055Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:10:59.565007354Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:10:59.565028103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:10:59.565061351Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:10:59.565071297Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:11:04.582388021Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:11:04.613554968Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:11:04.61366528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:11:04.634986208Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:11:04.635027068Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:11:04.635054892Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:11:04.635066274Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:11:04.635074668Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:11:09.655802441Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:11:09.684107652Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:11:09.684225558Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:11:09.709825503Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:11:09.709867427Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:11:09.709892937Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:11:09.709904127Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:11:09.709912414Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:11:14.725299436Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:11:14.754217011Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:11:14.754342995Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:11:14.778333364Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:11:14.778375108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:11:14.778388364Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:11:14.778399105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:11:14.778408913Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:11:19.793947241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:11:19.824884118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:11:19.824994894Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:11:19.850741803Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:11:19.850794069Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:11:19.850809335Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:11:19.850870085Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:11:19.850880054Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:11:24.86929598Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:11:24.897849565Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:11:24.897959405Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:11:24.920840331Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:11:24.920881891Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:11:24.920895213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:11:24.920906669Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:11:24.920916563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:11:29.940231113Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:11:29.971068656Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:11:29.971180238Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:11:29.997821276Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:11:29.997860665Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:11:29.997874554Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:11:29.997893959Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:11:29.997902145Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:11:35.012622516Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:11:35.041984325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:11:35.04209404Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:11:35.066753133Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:11:35.066792083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:11:35.066805932Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:11:35.066816851Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:11:35.06682634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:11:40.083399219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:11:40.114812228Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:11:40.114989976Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:11:40.138930612Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:11:40.13897185Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:11:40.139003119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:11:40.139012991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:11:40.139021088Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:11:45.158937478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:11:45.190787123Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:11:45.190879221Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:11:45.215668731Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:11:45.215713343Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:11:45.215727569Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:11:50.236901224Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:11:50.266611762Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:11:50.26671035Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:11:50.290297556Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:11:50.290338202Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:11:50.290350805Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:11:50.290361573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:11:50.290371337Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:11:55.305460673Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:11:55.337445723Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:11:55.337570623Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:11:55.363701315Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:11:55.363741581Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:11:55.36375573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:11:55.363766837Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:11:55.363775814Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:12:00.384394919Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:12:00.41165955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:12:00.411742221Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:12:00.436172286Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:12:00.436215863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:12:00.436229199Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:12:00.436251331Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:12:00.436261377Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:12:05.451708457Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:12:05.48251028Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:12:05.482622501Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:12:05.503866592Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:12:05.503941641Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:12:05.503957163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:12:05.50396662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:12:05.503975006Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:12:10.517969601Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:12:10.546957893Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:12:10.547065552Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:12:10.570988196Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:12:10.571419565Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:12:10.571442119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:12:10.571453554Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:12:10.571463591Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:12:15.586575656Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:12:15.615924717Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:12:15.616011802Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:12:15.636855498Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:12:15.636913704Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:12:15.63692806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:12:15.636938117Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:12:15.636945957Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:12:20.658687058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:12:20.689045287Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:12:20.689129314Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:12:20.710985459Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:12:20.711025771Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:12:20.711040062Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:12:20.711059874Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:12:20.711068322Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:12:25.72987858Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:12:25.758084719Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:12:25.758175985Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:12:25.780250433Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:12:25.780293858Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:12:25.780306611Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:12:25.780317206Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:12:25.780325836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:12:30.797163927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:12:30.828024858Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:12:30.828112798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:12:30.850406443Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:12:30.850446112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:12:30.850476941Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:12:30.850487516Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:12:30.850496029Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:12:35.866866288Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:12:35.898825171Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:12:35.898911247Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:12:35.921667624Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:12:35.921707541Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:12:35.921738169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:12:35.921748411Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:12:35.921756607Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:12:40.945292484Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:12:40.973195461Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:12:40.973302723Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:12:41.00013852Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:12:41.000212202Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:12:41.000228334Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:12:41.000273727Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:12:41.000284241Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:12:46.015777936Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:12:46.046968909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:12:46.04708366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:12:46.066598846Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:12:46.066654885Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:12:46.066669641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:12:46.066679134Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:12:46.066687678Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:12:51.088857778Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:12:51.118430138Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:12:51.118537863Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:12:51.138930292Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:12:51.138975272Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:12:51.1389904Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:12:51.139000929Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:12:51.139008459Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:12:56.159418745Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:12:56.18943572Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:12:56.189520673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:12:56.210098359Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:12:56.210136357Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:12:56.210149345Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:12:56.21015989Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:12:56.210169297Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:13:01.232832493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:13:01.264718648Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:13:01.26481916Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:13:01.286851636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:13:01.286892649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:13:01.286905899Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:13:01.286917884Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:13:01.286927031Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:13:06.303283116Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:13:06.331508223Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:13:06.33160962Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:13:06.351838666Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:13:06.351879028Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:13:06.351893587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:13:06.351904509Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:13:06.351914229Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:13:11.370921403Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:13:11.401035486Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:13:11.401115875Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:13:11.424635471Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:13:11.424675346Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:13:11.424689244Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:13:11.424700048Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:13:11.424709084Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:13:16.442271467Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:13:16.473131618Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:13:16.473278776Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:13:16.497784776Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:13:16.497840569Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:13:16.497856146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:13:16.497865326Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:13:16.497873625Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:13:21.519069469Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:13:21.549101129Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:13:21.549206513Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:13:21.569837072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:13:21.569879729Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:13:21.569892787Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:13:21.569904096Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:13:21.56991351Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:13:26.587083623Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:13:26.616793059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:13:26.616920526Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:13:26.636769815Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:13:26.636809439Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:13:26.636823349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:13:26.636833983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:13:31.655698143Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:13:31.68491593Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:13:31.685016481Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:13:31.706661921Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:13:31.706701162Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:13:31.706715571Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:13:31.706749064Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:13:31.706758075Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:13:36.723615747Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:13:36.753584888Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:13:36.753672333Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:13:36.779017423Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:13:36.779060507Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:13:36.779074504Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:13:36.779084459Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:13:36.779093299Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:13:41.796299302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:13:41.824816563Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:13:41.824921886Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:13:41.845624146Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:13:41.845673188Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:13:41.845687645Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:13:41.845696988Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:13:41.845705149Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:13:46.868280475Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:13:46.898957637Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:13:46.899068103Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:13:46.920383152Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:13:46.920425017Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:13:46.920496471Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:13:46.92050948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:13:46.920519996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:13:51.935975189Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:13:51.967006897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:13:51.967111173Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:13:51.98987546Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:13:51.989923957Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:13:51.989937925Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:13:51.989947748Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:13:51.989955563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:13:57.00961558Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:13:57.040223567Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:13:57.0403469Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:13:57.063478746Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:13:57.063532565Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:13:57.063546665Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:13:57.06355726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:13:57.063566193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:14:02.083156668Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:14:02.13402518Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:14:02.134118382Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:14:02.162946611Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:14:02.163471211Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:14:02.163495627Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:14:02.163508884Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:14:02.163520306Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:14:07.181298021Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:14:07.211888396Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:14:07.211985926Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:14:07.234194178Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:14:07.23425738Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:14:07.234273161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:14:07.23432213Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:14:07.234333385Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:14:12.249438118Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:14:12.279889905Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:14:12.279979076Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:14:12.305190986Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:14:12.305246741Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:14:12.30526134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:14:12.305272388Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:14:12.305280772Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:14:17.323035725Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:14:17.352173626Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:14:17.352360488Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:14:17.371837339Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:14:17.371877262Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:14:17.371919216Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:14:17.371929806Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:14:17.371938891Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:14:22.387170538Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:14:22.41704929Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:14:22.417154662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:14:22.443580225Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:14:22.443622237Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:14:22.443635317Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:14:22.443645373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:14:22.443653476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:14:27.458509377Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:14:27.489623888Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:14:27.489722397Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:14:27.514423191Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:14:27.51446511Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:14:27.514478195Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:14:27.514489045Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:14:27.514499648Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:14:32.530870931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:14:32.562070032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:14:32.562179282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:14:32.584149642Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:14:32.584192533Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:14:32.584206529Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:14:32.584218095Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:14:32.584227708Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:14:37.601574899Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:14:37.633529259Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:14:37.63363852Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:14:37.657176259Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:14:37.657229791Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:14:37.657257265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:14:37.657267204Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:14:37.657275351Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:14:42.674101064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:14:42.704955391Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:14:42.705054541Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:14:42.730107459Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:14:42.730147916Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:14:42.730161676Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:14:42.730174591Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:14:42.730184017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:14:47.749473952Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:14:47.776844966Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:14:47.776945176Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:14:47.800962616Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:14:47.801021084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:14:47.801036054Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:14:47.80106887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:14:47.801093977Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:14:52.821327723Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:14:52.849001084Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:14:52.849106471Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:14:52.869988329Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:14:52.870030278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:14:52.870058692Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:14:52.870068148Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:14:52.870076234Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:14:57.889903294Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:14:57.919594535Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:14:57.919723417Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:14:57.943282499Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:14:57.943323895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:14:57.943337073Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:14:57.943346863Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:14:57.943356731Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:15:02.9599197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:15:02.990836391Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:15:02.99097134Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:15:03.017816175Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:15:03.01825875Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:15:03.018281937Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:15:03.0182964Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:15:03.018308162Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:15:08.038195316Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:15:08.067228853Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:15:08.067333274Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:15:08.091826544Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:15:08.091887025Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:15:08.091901807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:15:08.091912041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:15:08.09192038Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:15:13.108800833Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:15:13.139312562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:15:13.139418833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:15:13.159879097Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:15:13.159933763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:15:13.159949078Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:15:13.159959896Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:15:13.159968556Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:15:18.17798926Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:15:18.206149791Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:15:18.206277155Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:15:18.230739108Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:15:18.230779379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:15:18.230793242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:15:18.230804964Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:15:18.230814851Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:15:23.24863932Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:15:23.278173082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:15:23.27828076Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:15:23.298610167Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:15:23.29865285Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:15:23.298666093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:15:23.298676771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:15:23.298686199Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:15:28.321192223Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:15:28.359693715Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:15:28.359781965Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:15:28.38328204Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:15:28.383322068Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:15:28.383336433Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:15:28.383346824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:15:28.383355593Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:15:33.405312385Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:15:33.434303557Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:15:33.434400684Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:15:33.461195643Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:15:33.461250028Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:15:33.461263881Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:15:33.461275876Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:15:33.46128512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:15:38.481047445Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:15:38.509371951Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:15:38.509484221Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:15:38.531690202Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:15:38.531730989Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:15:38.531744803Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:15:38.531756629Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:15:38.531765887Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:15:43.549616775Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:15:43.578871131Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:15:43.578953517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:15:43.60263517Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:15:43.603141966Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:15:43.603446476Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:15:43.603626794Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:15:43.603782611Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:15:48.625284716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:15:48.65415823Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:15:48.654268096Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:15:48.677698647Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:15:48.67774691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:15:48.677761583Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:15:48.677774131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:15:48.677783806Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:15:53.693609127Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:15:53.724976722Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:15:53.725080133Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:15:53.745449198Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:15:53.745489261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:15:58.760793829Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:15:58.791642398Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:15:58.791746753Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:15:58.816329789Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:15:58.816368514Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:15:58.816381555Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:15:58.816391692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:15:58.816400621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:16:03.835535494Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:16:03.866985701Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:16:03.867094062Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:16:03.889907636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:16:03.889947177Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:16:03.88996009Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:16:03.889971412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:16:03.889981709Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:16:08.909272635Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:16:08.938973147Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:16:08.939078951Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:16:08.960887899Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:16:08.960944983Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:16:08.960958745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:16:08.96096833Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:16:08.960976499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:16:13.97747699Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:16:14.006747115Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:16:14.006857497Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:16:14.031455217Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:16:14.031499449Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:16:14.031513349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:16:14.031525706Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:16:14.031535328Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:16:19.052153924Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:16:19.081107716Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:16:19.081215347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:16:19.104127495Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:16:19.104167246Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:16:19.104181Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:16:19.104191095Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:16:19.104200541Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:16:24.123284989Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:16:24.15386023Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:16:24.153959876Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:16:24.179215583Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:16:24.179274222Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:16:24.179288317Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:16:24.179299249Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:16:24.179309244Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:16:29.19410875Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:16:29.225929349Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:16:29.226028238Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:16:29.250781049Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:16:29.250838722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:16:29.250854348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:16:29.250864118Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:16:29.250872298Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:16:34.269679214Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:16:34.298819816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:16:34.29890779Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:16:34.318592108Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:16:34.318629977Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:16:34.318643674Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:16:34.318655411Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:16:34.318665767Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:16:39.337582182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:16:39.365431451Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:16:39.365530181Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:16:39.389345964Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:16:39.389404403Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:16:39.389418968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:16:39.389429136Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:16:39.389437144Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:16:44.408269764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:16:44.436677804Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:16:44.436770339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:16:44.460139076Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:16:44.460177929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:16:44.460190169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:16:44.460200393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:16:44.460210452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:16:49.477232482Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:16:49.506745548Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:16:49.506868626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:16:49.532159723Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:16:49.532200509Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:16:49.532213647Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:16:49.532225015Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:16:49.532246367Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:16:54.550621573Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:16:54.580944969Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:16:54.581055829Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:16:54.602624436Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:16:54.602665983Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:16:54.602679233Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:16:54.602690939Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:16:54.602701404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:16:59.621474146Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:16:59.650141317Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:16:59.650263951Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:16:59.669636814Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:16:59.669683511Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:16:59.669696683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:16:59.669716902Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:16:59.66972574Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:17:04.686593489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:17:04.717553547Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:17:04.717656988Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:17:04.742670611Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:17:04.74273052Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:17:04.742744884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:17:04.742756481Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:17:04.742765134Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:17:09.760232703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:17:09.790103193Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:17:09.79020534Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:17:09.812050097Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:17:09.812106836Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:17:09.812121618Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:17:09.81213127Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:17:09.812139742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:17:14.82858104Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:17:14.857812783Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:17:14.857908616Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:17:14.882939236Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:17:14.882980075Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:17:14.882992858Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:17:14.883005142Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:17:14.883014176Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:17:19.903295123Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:17:19.931214419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:17:19.931339159Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:17:19.955087538Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:17:19.955126824Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:17:19.955139937Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:17:19.955151613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:17:19.955159543Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:17:24.970440685Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:17:24.998026257Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:17:24.998140962Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:17:25.025528086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:17:25.025595173Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:17:25.025609236Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:17:25.025619361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:17:25.025627894Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:17:30.056257653Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:17:30.089359184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:17:30.089444296Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:17:30.112395159Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:17:30.112584099Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:17:30.112600941Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:17:30.112611728Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:17:30.112620953Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:17:35.129183816Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:17:35.158188606Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:17:35.158316843Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:17:35.178884302Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:17:35.178923362Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:17:40.201720551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:17:40.230861373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:17:40.230955104Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:17:40.25442655Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:17:40.254464678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:17:40.254477452Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:17:40.254506605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:17:40.254516099Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:17:45.270477703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:17:45.299017917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:17:45.299123592Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:17:45.319965451Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:17:45.320003151Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:17:45.320041736Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:17:45.32005162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:17:45.320059852Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:17:50.342295902Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:17:50.369590137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:17:50.369681305Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:17:50.392140004Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:17:50.392192425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:17:50.392207349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:17:50.392218041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:17:50.392226499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:17:55.409289652Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:17:55.439205374Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:17:55.439302448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:17:55.46296158Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:17:55.463006303Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:17:55.463019438Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:17:55.463030826Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:17:55.463040218Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:18:00.481984303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:18:00.510169486Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:18:00.510299964Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:18:00.534600831Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:18:00.534641133Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:18:00.534654025Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:18:00.534665308Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:18:00.534675404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:18:05.550642772Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:18:05.58188615Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:18:05.581988638Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:18:05.603978995Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:18:05.604019408Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:18:05.60403245Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:18:10.630285211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:18:10.662693103Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:18:10.662804594Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:18:10.683774538Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:18:10.683831666Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:18:15.705106307Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:18:15.733291651Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:18:15.733397436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:18:15.75793881Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:18:15.757979382Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:18:15.757996097Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:18:15.758054903Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:18:15.75806386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:18:20.776080416Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:18:20.806431086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:18:20.806510632Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:18:20.830458337Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:18:20.830496443Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:18:20.830509671Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:18:20.830547423Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:18:20.830555968Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:18:25.850151213Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:18:25.880926261Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:18:25.881017751Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:18:25.908403904Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:18:25.908922752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:18:25.908947352Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:18:25.908959819Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:18:25.908970904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:18:30.928972437Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:18:30.959556698Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:18:30.959642774Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:18:30.984407236Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:18:30.984566298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:18:30.984583538Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:18:30.984594676Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:18:30.98460384Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:18:36.005283014Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:18:36.036653981Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:18:36.036765646Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:18:36.060160278Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:18:36.060199053Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:18:36.060262283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:18:36.060273887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:18:36.060283639Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:18:41.075772719Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:18:41.106878531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:18:41.106994209Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:18:41.13426623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:18:41.13431022Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:18:41.134322983Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:18:41.13433484Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:18:41.134345644Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:18:46.153312022Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:18:46.186472343Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:18:46.186573289Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:18:46.212666612Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:18:46.212710528Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:18:46.212724998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:18:46.21273554Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:18:46.212744101Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:18:51.229399233Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:18:51.260617482Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:18:51.260706822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:18:51.282976595Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:18:51.283032559Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:18:51.283048184Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:18:51.283058569Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:18:51.28315745Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:18:56.297936203Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:18:56.329604914Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:18:56.329716083Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:18:56.354943201Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:18:56.355001844Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:18:56.355015983Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:18:56.355027104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:18:56.355037237Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:19:01.375694887Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:19:01.41362112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:19:01.41375542Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:19:01.439081182Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:19:01.439145117Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:19:06.456719318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:19:06.48809787Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:19:06.488204253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:19:06.511499693Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:19:06.51154414Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:19:06.511558732Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:19:06.511569799Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:19:06.511578071Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:19:11.528774172Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:19:11.556770251Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:19:11.556882879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:19:11.576818229Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:19:11.57686076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:19:11.576875402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:19:11.576886973Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:19:11.576897014Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:19:16.601520652Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:19:16.631256113Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:19:16.631356404Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:19:16.653985355Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:19:16.654027795Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:19:16.654041428Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:19:16.654053317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:19:16.654062762Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:19:21.670843056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:19:21.700058154Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:19:21.700141045Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:19:21.721677949Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:19:21.722165782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:19:21.722189626Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:19:21.722202614Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:19:21.722213521Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:19:26.738272784Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:19:26.767518205Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:19:26.76764561Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:19:26.793743062Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:19:26.793786791Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:19:26.793799682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:19:26.793810242Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:19:26.793820707Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:19:31.815231983Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:19:31.847790173Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:19:31.847871927Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:19:31.868004136Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:19:31.868057202Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:19:31.868071865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:19:31.868081059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:19:31.868089226Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:19:36.88778132Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:19:36.914818647Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:19:36.914935589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:19:36.935506382Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:19:36.935545765Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:19:36.935558852Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:19:36.935585497Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:19:36.935594119Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:19:41.949638954Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:19:41.981352773Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:19:41.981460223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:19:42.001168107Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:19:42.001209603Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:19:42.001222764Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:19:42.001248587Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:19:42.00125829Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:19:47.01739281Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:19:47.048712793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:19:47.048831352Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:19:47.0696861Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:19:47.069724092Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:19:47.069737898Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:19:47.069750559Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:19:47.069759897Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:19:52.085354692Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:19:52.117671269Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:19:52.117792347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:19:52.14073958Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:19:52.140780809Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:19:52.140794036Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:19:52.140806169Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:19:52.140815871Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:19:57.159279521Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:19:57.189511818Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:19:57.189630535Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:19:57.214921756Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:19:57.214962937Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:19:57.214976198Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:19:57.21498798Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:19:57.214998068Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:20:02.236722576Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:20:02.381069771Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:20:02.381200303Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:20:02.419968388Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:20:02.420014382Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:20:02.420030294Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:20:02.420042163Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:20:02.420052272Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:20:07.443264395Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:20:07.473582389Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:20:07.473680777Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:20:07.497569683Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:20:07.497612259Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:20:07.497646675Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:20:07.497657954Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:20:07.49766629Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:20:12.516298147Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:20:12.544339568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:20:12.544557915Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:20:12.566758452Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:20:12.56681502Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:20:12.566887143Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:20:12.566899137Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:20:12.56690787Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:20:17.588331036Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:20:17.615352308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:20:17.615444867Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:20:17.640147119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:20:17.640193017Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:20:17.640206977Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:20:17.640218279Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:20:17.640226381Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:20:22.660165266Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:20:22.692750736Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:20:22.692851739Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:20:22.713596432Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:20:22.713638747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:20:22.713652123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:20:22.713663389Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:20:27.731527206Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:20:27.762305585Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:20:27.762409393Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:20:27.787497984Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:20:27.787539405Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:20:27.787553038Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:20:32.804815319Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:20:32.835037937Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:20:32.835153811Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:20:32.855262842Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:20:32.855313457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:20:32.855328277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:20:32.855339314Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:20:32.85534778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:20:37.874640823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:20:37.901827778Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:20:37.901930602Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:20:37.923397572Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:20:37.923436242Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:20:37.923449817Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:20:37.923461247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:20:37.923470213Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:20:42.941564025Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:20:42.97015865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:20:42.970280465Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:20:42.992678239Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:20:42.992722521Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:20:42.992736462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:20:42.992745565Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:20:42.992753561Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:20:48.011279628Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:20:48.042073057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:20:48.04221128Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:20:48.064307713Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:20:48.064363617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:20:48.064379277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:20:48.06439053Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:20:48.064399419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:20:53.08252187Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:20:53.113188669Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:20:53.113313155Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:20:53.136263728Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:20:53.136306647Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:20:53.136319806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:20:53.136330354Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:20:53.136340868Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:20:58.155291503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:20:58.184039467Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:20:58.184147436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:20:58.209709577Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:20:58.209762844Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:20:58.209777526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:20:58.20978724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:20:58.209796843Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:21:03.228281574Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:21:03.256615945Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:21:03.256722127Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:21:03.283946583Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:21:03.284005711Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:21:03.284020378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:21:03.284029991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:21:03.284037972Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:21:08.301072277Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:21:08.331642384Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:21:08.331749965Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:21:08.354942409Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:21:08.354985406Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:21:08.355014544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:21:08.355025339Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:21:08.355034386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:21:13.37161008Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:21:13.401034849Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:21:13.401139366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:21:13.423445434Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:21:13.423488576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:21:13.423501823Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:21:13.423512679Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:21:13.423522592Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:21:18.44339503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:21:18.470710488Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:21:18.470824721Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:21:18.495369062Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:21:18.495409368Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:21:18.495450393Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:21:18.495480614Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:21:18.495610717Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:21:23.511941547Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:21:23.541649558Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:21:23.541748701Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:21:23.563860395Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:21:23.563901173Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:21:23.56391505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:21:23.563924964Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:21:23.563933406Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:21:28.584077085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:21:28.614731585Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:21:28.614839322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:21:28.641759741Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:21:28.641804982Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:21:28.641822148Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:21:28.641832898Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:21:28.641840182Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:21:33.656069581Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:21:33.68631618Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:21:33.686435381Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:21:33.709849775Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:21:33.709889169Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:21:33.70990186Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:21:33.709912298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:21:33.709922876Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:21:38.725281388Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:21:38.755140082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:21:38.755225665Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:21:38.777471694Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:21:38.777519502Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:21:38.777533401Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:21:38.777543767Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:21:38.777552111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:21:43.795647919Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:21:43.825600481Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:21:43.825680547Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:21:43.851687281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:21:43.852142967Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:21:43.85216764Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:21:43.852181055Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:21:43.852192036Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:21:48.87128475Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:21:48.900701983Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:21:48.900891428Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:21:48.928047977Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:21:48.928088685Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:21:48.928113323Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:21:48.928123493Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:21:48.928132315Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:21:53.945723914Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:21:53.975172186Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:21:53.975300163Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:21:53.995409657Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:21:53.995450448Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:21:53.995465353Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:21:53.995492184Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:21:53.995501506Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:21:59.016554029Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:21:59.045319151Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:21:59.045417655Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:21:59.066321897Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:21:59.066408706Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:21:59.066423392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:21:59.066453334Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:21:59.066463154Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:22:04.084014884Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:22:04.114079236Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:22:04.114176797Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:22:04.139667001Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:22:04.139724788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:22:04.139739047Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:22:04.139750095Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:22:04.139758514Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:22:09.161286069Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:22:09.190442058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:22:09.190544565Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:22:09.212352762Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:22:09.212395591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:22:09.212408973Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:22:09.212420174Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:22:09.212437498Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:22:14.228661425Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:22:14.258625323Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:22:14.258936098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:22:14.283820206Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:22:14.283864256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:22:14.283877797Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:22:14.283887911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:22:14.28389741Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:22:19.303462662Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:22:19.332147305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:22:19.332244708Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:22:19.356130727Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:22:19.356171594Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:22:19.356210555Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:22:19.356280453Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:22:19.356290989Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:22:24.377233241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:22:24.405565473Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:22:24.405653591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:22:24.426650561Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:22:24.426695134Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:22:24.426709012Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:22:24.426720633Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:22:24.426730126Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:22:29.439773245Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:22:29.469427763Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:22:29.469531345Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:22:29.492119576Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:22:29.492158542Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:22:29.492172034Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:22:29.492183233Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:22:29.492193424Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:22:34.507843919Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:22:34.539144581Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:22:34.539230488Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:22:34.559119047Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:22:34.559159932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:22:34.559173685Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:22:34.559185653Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:22:34.559195082Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:22:39.578032808Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:22:39.608866931Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:22:39.608975178Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:22:39.634810504Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:22:39.634854239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:22:39.634868456Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:22:39.634879401Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:22:39.634894397Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:22:44.655323082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:22:44.686778037Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:22:44.686871287Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:22:44.709479252Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:22:44.709520118Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:22:44.709536395Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:22:44.709570887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:22:44.709579926Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:22:49.727891262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:22:49.757266789Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:22:49.757348528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:22:49.778151895Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:22:49.778191608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:22:49.778205042Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:22:49.778216336Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:22:49.778226144Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:22:54.794594197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:22:54.826393085Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:22:54.826499073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:22:54.846532816Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:22:54.84657238Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:22:54.846585683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:22:54.846597601Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:22:54.846606676Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:22:59.865443977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:22:59.901000154Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:22:59.901113651Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:22:59.925146733Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:22:59.925185495Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:22:59.925198645Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:22:59.925209678Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:22:59.925218031Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:23:04.94028703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:23:04.968907445Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:23:04.969063936Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:23:04.991587504Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:23:04.991632563Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:23:04.991646015Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:23:04.991656824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:23:04.991666943Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:23:10.0157107Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:23:10.046427327Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:23:10.046552882Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:23:10.07047397Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:23:10.070515629Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:23:10.070553786Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:23:10.070576677Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:23:10.070584908Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:23:15.093272951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:23:15.122880579Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:23:15.123002815Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:23:15.146497017Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:23:15.146534249Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:23:15.146547359Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:23:15.146558668Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:23:15.146569156Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:23:20.165016335Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:23:20.195067951Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:23:20.195158976Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:23:20.219624048Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:23:25.232783753Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:23:25.262259435Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:23:25.262353845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:23:25.284776404Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:23:25.284830183Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:23:25.284847084Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:23:25.284857465Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:23:25.284865855Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:23:30.303223199Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:23:30.336320765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:23:30.336424775Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:23:30.362048822Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:23:30.362092361Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:23:30.362105857Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:23:30.362116132Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:23:30.362126416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:23:35.378220443Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:23:35.408765635Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:23:35.408878306Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:23:35.430444243Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:23:35.430499235Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:23:35.430512887Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:23:35.430534394Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:23:35.430543561Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:23:40.450869392Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:23:40.479778869Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:23:40.479862599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:23:40.503333998Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:23:40.503378566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:23:40.503393125Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:23:40.503403353Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:23:40.503413571Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:23:45.523315797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:23:45.551574298Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:23:45.551660741Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:23:45.574975392Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:23:45.57501779Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:23:45.575030369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:23:50.594732553Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:23:50.62478618Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:23:50.624893847Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:23:50.650389648Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:23:50.650429328Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:23:50.650443885Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:23:50.650455506Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:23:50.65046557Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:23:55.66627722Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:23:55.696222867Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:23:55.696377373Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:23:55.718451186Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:23:55.718493027Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:23:55.71850519Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:23:55.718516311Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:23:55.718526316Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:24:00.738784772Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:24:00.766219108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:24:00.766319566Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:24:00.789868841Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:24:00.789910457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:24:00.789924719Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:24:00.789960416Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:24:00.789969168Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:24:05.80830673Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:24:05.838314872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:24:05.838415571Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:24:05.860348847Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:24:05.860390721Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:24:05.86052167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:24:05.860548579Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:24:05.860559675Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:24:10.878756812Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:24:10.909751045Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:24:10.909853414Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:24:10.933365582Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:24:10.933407594Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:24:10.933422027Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:24:10.933433217Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:24:10.933441901Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:24:15.953096216Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:24:15.981312838Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:24:15.981418512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:24:16.000890231Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:24:16.000932185Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:24:16.000947022Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:24:16.000981451Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:24:16.000990522Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:24:21.020685908Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:24:21.051187855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:24:21.051286194Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:24:21.076314847Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:24:21.076358847Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:24:21.076372059Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:24:21.076383098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:24:21.076393162Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:24:26.094664033Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:24:26.125162557Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:24:26.125262161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:24:26.144874056Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:24:26.144940845Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:24:26.144955516Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:24:26.145096219Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:24:26.145109616Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:24:31.166295612Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:24:31.199959376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:24:31.2000569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:24:31.222541327Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:24:31.222579518Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:24:31.222592133Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:24:31.222603929Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:24:31.222613705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:24:44.76287613Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:24:44.827513978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:24:44.827591505Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:24:44.892403058Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:24:44.892516017Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:24:44.892531047Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:24:44.892541149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:24:44.892549678Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:24:49.916032481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:24:49.944739146Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:24:49.944830187Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:24:49.968271579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:24:49.968314701Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:24:49.968327731Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:24:49.968338971Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:24:49.968347812Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:24:54.984151215Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:24:55.013613155Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:24:55.013735845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:24:55.03638575Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:24:55.036494409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:24:55.036513613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:24:55.036528131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:24:55.036539013Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:25:00.095388844Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:25:00.154123703Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:25:00.154227694Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:25:00.180143679Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:25:00.180200375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:25:00.180214261Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:25:00.180224522Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:25:00.180309344Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:25:00.18033897Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T18:25:05.1982943Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:25:05.229226526Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:25:05.229359196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:25:05.255312932Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:25:05.255356188Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:25:05.255368974Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:25:05.255380086Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:25:05.25538878Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:25:10.275585765Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:25:10.303226924Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:25:10.303336051Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:25:10.328947002Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:25:10.329002711Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:25:10.329018241Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:25:10.329027794Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:25:10.329035966Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:25:15.345836895Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:25:15.376325052Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:25:15.376544314Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:25:15.401386536Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:25:15.401427255Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:25:15.401441962Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:25:15.401452726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:25:15.40146292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:25:20.423345899Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:25:20.453333145Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:25:20.453421526Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:25:20.479536227Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:25:20.479577609Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:25:20.479590141Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:25:20.479617279Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:25:20.47962675Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:25:25.496922733Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:25:25.527441512Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:25:25.527527706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:25:25.552828519Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:25:25.552873065Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:25:25.552886672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:25:25.552898967Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:25:25.552908282Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:25:30.570840972Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:25:30.602595643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:25:30.602730656Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:25:30.62504077Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:25:30.625085046Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:25:30.62509796Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:25:30.62510942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:25:30.625120014Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:25:35.641266418Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:25:35.668050439Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:25:35.668152299Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:25:35.691799149Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:25:35.69217939Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:25:35.69220029Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:25:35.692225838Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:25:35.692250803Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:25:40.709859024Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:25:40.737859973Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:25:40.737944213Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:25:40.758197099Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:25:40.758263445Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:25:40.758278491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:25:40.758287892Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:25:40.758295996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:25:45.776281718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:25:45.803828816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:25:45.803926479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:25:45.826460819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:25:45.826501123Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:25:45.826514912Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:25:45.826526597Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:25:45.8265353Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:25:50.843213252Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:25:50.872528643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:25:50.872632924Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:25:50.893523057Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:25:50.89356361Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:25:50.893577283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:25:50.89358886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:25:50.893598401Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:25:55.908573462Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:25:55.938281398Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:25:55.93840203Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:25:55.962466716Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:25:55.962519667Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:25:55.962536066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:25:55.962546682Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:25:55.962554674Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:26:00.980382778Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:26:01.010900344Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:26:01.011008283Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:26:01.033993567Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:26:01.034037354Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:26:01.034051263Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:26:01.034064238Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:26:01.034073836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:26:06.051843633Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:26:06.080130174Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:26:06.080258592Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:26:06.106007257Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:26:06.106050887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:26:06.106063586Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:26:06.106075034Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:26:06.106083871Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:26:11.126283794Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:26:11.156107452Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:26:11.156204407Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:26:11.176791461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:26:11.176835859Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:26:11.176849083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:26:11.176860904Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:26:11.176870125Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:26:16.19729163Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:26:16.225440857Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:26:16.225521027Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:26:16.249902907Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:26:16.250379439Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:26:16.250610034Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:26:16.250881971Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:26:16.251039667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:26:21.270158574Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:26:21.301121646Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:26:21.30122516Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:26:21.323476035Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:26:21.323552373Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:26:21.323567667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:26:21.323577585Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:26:21.323601785Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:26:26.339008736Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:26:26.370529042Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:26:26.370622441Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:26:26.397769345Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:26:26.397811745Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:26:26.397825227Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:26:26.397836759Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:26:26.397846318Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:26:31.414142974Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:26:31.445704707Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:26:31.445795734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:26:31.466373788Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:26:31.466417681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:26:31.46643201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:26:31.466443114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:26:31.466452655Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:26:36.484281291Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:26:36.513286946Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:26:36.513395946Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:26:36.540771623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:26:36.540816494Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:26:36.540830834Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:26:36.540842295Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:26:36.540851729Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:26:41.555701351Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:26:41.582977511Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:26:41.583076209Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:26:41.608921896Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:26:41.608981161Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:26:41.608995473Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:26:41.609005013Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:26:41.609013633Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:26:46.625346841Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:26:46.655044827Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:26:46.655139422Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:26:46.678776382Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:26:46.679292625Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:26:46.679560489Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:26:46.679838718Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:26:46.680002355Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:26:51.701256058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:26:51.73103622Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:26:51.731144899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:26:51.755582991Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:26:51.755640817Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:26:51.755654794Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:26:51.755683127Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:26:51.755702387Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:26:56.77253446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:26:56.802856536Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:26:56.802968272Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:26:56.823397156Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:26:56.823440053Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:26:56.823453042Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:26:56.823486263Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:26:56.823494871Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:27:01.841329951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:27:01.869369939Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:27:01.869456432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:27:01.893623887Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:27:01.893695263Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:27:01.893711377Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:27:01.893720805Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:27:01.893791354Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:27:06.911391886Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:27:06.940884161Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:27:06.940986629Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:27:06.964845366Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:27:06.964891924Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:27:06.964905659Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:27:06.964917809Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:27:06.964927452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:27:11.981268212Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:27:12.013461383Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:27:12.013582801Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:27:12.035349952Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:27:12.035391726Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:27:12.035406134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:27:12.035416954Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:27:12.035427356Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:27:17.051362757Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:27:17.082341425Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:27:17.082422852Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:27:17.105841862Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:27:17.10590264Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:27:17.105916146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:27:17.10592556Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:27:17.105933959Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:27:22.129346849Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:27:22.159140733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:27:22.159261337Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:27:22.181575117Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:27:22.181616341Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:27:22.181630348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:27:22.181641744Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:27:22.1816514Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:27:27.196074327Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:27:27.226012972Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:27:27.226104197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:27:27.249572488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:27:27.249612189Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:27:27.24962574Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:27:27.24963748Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:27:27.24964737Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:27:32.269179809Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:27:32.298933913Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:27:32.299014906Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:27:32.322727724Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:27:32.322770606Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:27:32.322783333Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:27:32.322794993Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:27:32.322804347Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:27:37.340288077Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:27:37.371436036Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:27:37.371547785Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:27:37.395712058Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:27:37.395753577Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:27:37.395783464Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:27:37.395793834Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:27:37.395802207Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:27:42.415229414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:27:42.445270865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:27:42.445841308Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:27:42.469456123Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:27:42.469495107Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:27:42.469509407Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:27:42.469519213Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:27:42.469528664Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:27:47.486933535Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:27:47.517946431Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:27:47.518063873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:27:47.543011296Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:27:47.543053637Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:27:47.543067874Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:27:47.543078755Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:27:47.543088108Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:27:52.56576694Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:27:52.594265958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:27:52.594351641Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:27:52.61685686Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:27:52.616899276Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:27:57.642570838Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:27:57.669204647Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:27:57.669309524Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:27:57.692912934Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:27:57.692959591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:27:57.692973814Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:27:57.692982927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:27:57.692993256Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:28:06.133586352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:28:06.25047572Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:28:06.250589294Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:28:06.304787343Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:28:06.304823823Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:28:06.304838199Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:28:06.30484918Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:28:06.30485966Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:28:11.325159482Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:28:11.355125659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:28:11.355217569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:28:11.375553829Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:28:11.375635406Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:28:11.375652017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:28:11.37575109Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:28:11.375764214Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:28:16.390034242Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:28:16.420256064Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:28:16.4203371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:28:16.444942417Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:28:16.444984886Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:28:16.445044061Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:28:16.445055626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:28:16.445063974Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:28:21.468452986Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:28:21.496835352Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:28:21.496943576Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:28:21.522623864Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:28:21.52266651Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:28:21.522682087Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:28:21.522692974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:28:21.522703351Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:28:26.536326149Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:28:26.565169373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:28:26.565306581Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:28:26.58681128Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:28:26.586866018Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:28:26.586881675Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:28:26.586892061Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:28:26.586900274Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:28:31.605692385Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:28:31.635160357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:28:31.635271497Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:28:31.660687257Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:28:31.660746076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:28:31.660761514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:28:31.660806724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:28:31.660815749Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:28:36.676274522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:28:36.706821776Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:28:36.706933218Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:28:36.730427067Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:28:36.73046997Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:28:36.730483531Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:28:36.730496082Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:28:36.730505188Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:28:41.747365804Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:28:41.777512127Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:28:41.777640476Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:28:41.797952157Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:28:41.797984634Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:28:41.797998093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:28:46.814422769Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:28:46.844032529Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:28:46.84412642Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:28:46.866672271Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:28:46.866749989Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:28:46.866772105Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:28:46.866783766Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:28:46.866792059Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:28:51.888453789Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:28:51.918585018Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:28:51.918710356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:28:51.941814228Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:28:51.941892538Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:28:51.941911619Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:28:51.941921813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:28:51.941929838Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:28:56.956849516Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:28:56.986349495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:28:56.986483416Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:28:57.008975643Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:28:57.00903527Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:28:57.009050429Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:28:57.009061842Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:28:57.009070036Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:29:02.028267573Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:29:02.058936395Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:29:02.059032409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:29:02.081252498Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:29:02.081298335Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:29:02.081311802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:29:02.081351868Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:29:02.08136167Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:29:07.101338557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:29:07.131735162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:29:07.13184168Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:29:07.155521291Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:29:07.155578622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:29:07.155593724Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:29:07.155617731Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:29:07.155641644Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:29:12.177128374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:29:12.206067017Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:29:12.206159105Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:29:12.229651595Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:29:12.229707642Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:29:12.229723052Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:29:12.229776172Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:29:12.229786044Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:29:17.245778432Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:29:17.27553343Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:29:17.275633169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:29:17.301133514Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:29:17.301173756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:29:17.30118946Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:29:17.301199359Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:29:17.301207703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:29:22.320176329Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:29:22.350923112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:29:22.351037737Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:29:22.372930059Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:29:22.37297643Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:29:22.372991138Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:29:22.373000197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:29:22.373008483Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:29:27.388475202Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:29:27.417145111Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:29:27.417275121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:29:27.438576101Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:29:27.438631592Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:29:32.455837415Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:29:32.486447828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:29:32.486551237Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:29:32.50816776Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:29:32.508211359Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:29:32.508255757Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:29:32.508285099Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:29:32.508312511Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:29:37.525762426Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:29:37.554723688Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:29:37.554812699Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:29:37.579803728Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:29:37.579859995Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:29:37.57987492Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:29:42.60227251Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:29:42.630877848Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:29:42.630972705Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:29:42.656125709Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:29:42.656171118Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:29:42.656184604Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:29:42.656206041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:29:42.656214655Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:29:47.676273971Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:29:47.706708125Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:29:47.706794522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:29:47.728249351Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:29:47.728293148Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:29:47.728307342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:29:47.728318491Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:29:47.728328495Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:29:52.748272551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:29:52.778083139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:29:52.778193791Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:29:52.799478759Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:29:52.799528192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:29:52.799543691Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:29:52.799553863Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:29:52.799560946Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:29:57.817265799Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:29:57.848707892Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:29:57.848844279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:29:57.872873627Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:29:57.872913889Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:29:57.872927981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:29:57.872938761Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:29:57.872947117Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:30:02.905129473Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:30:02.957861174Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:30:02.957962922Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:30:02.988679982Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:30:02.988725684Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:30:02.988740776Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:30:02.988751353Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:30:02.988760452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:30:08.010361134Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:30:08.039553388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:30:08.039642114Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:30:08.06102543Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:30:08.061072582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:30:08.06108857Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:30:08.061099623Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:30:08.061107774Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:30:13.078707413Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:30:13.109897391Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:30:13.109986285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:30:13.133410781Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:30:13.133472493Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:30:13.133486524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:30:13.133496573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:30:13.133504791Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:30:18.153778027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:30:18.184596376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:30:18.184699968Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:30:18.208344676Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:30:18.208387971Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:30:18.208401848Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:30:18.208490351Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:30:18.208502011Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:30:23.227329994Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:30:23.259434452Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:30:23.259547281Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:30:23.284513692Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:30:23.284564605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:30:23.284578834Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:30:23.28459216Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:30:23.284601793Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:30:28.303096689Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:30:28.331846127Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:30:28.331978279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:30:28.353570489Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:30:28.354062047Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:30:28.354300816Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:30:28.354428178Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:30:28.354442445Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:30:33.374861751Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:30:33.404145342Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:30:33.404247822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:30:33.429019312Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:30:33.429074207Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:30:33.429089377Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:30:33.429102006Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:30:33.429110816Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:30:38.449267166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:30:38.480727287Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:30:38.480850569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:30:38.501695388Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:30:38.501739503Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:30:38.501752153Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:30:38.501764683Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:30:38.501774755Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:30:43.522575273Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:30:43.551871273Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:30:43.551980803Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:30:43.573369738Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:30:43.57341403Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:30:43.573427773Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:30:43.573438266Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:30:43.57344668Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:30:48.59235099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:30:48.621760669Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:30:48.621856193Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:30:48.646653793Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:30:48.646699785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:30:53.66829507Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:30:53.698582989Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:30:53.698680943Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:30:53.721623293Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:30:53.721669425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:30:53.721684578Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:30:53.721731936Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:30:53.7217418Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:30:58.739284924Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:30:58.765851826Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:30:58.765961515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:30:58.788711919Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:30:58.788770084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:30:58.788785287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:30:58.788859724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:30:58.788869775Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:31:03.807008404Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:31:03.839552794Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:31:03.839638101Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:31:03.862530482Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:31:03.862591018Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:31:08.88267176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:31:08.914335533Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:31:08.914426422Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:31:08.939522152Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:31:08.93956425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:31:08.939616646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:31:08.939628109Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:31:08.939636533Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:31:13.954690065Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:31:13.985310922Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:31:13.985427295Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:31:14.013902958Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:31:14.014375297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:31:14.014584265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:31:14.014891179Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:31:14.014907787Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:31:19.031461137Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:31:19.060626963Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:31:19.06074174Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:31:19.083262579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:31:19.083303714Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:31:19.083317387Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:31:19.083328934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:31:24.102141225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:31:24.131140045Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:31:24.131263198Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:31:24.155403551Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:31:24.155446668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:31:24.155460143Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:31:24.155470585Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:31:24.155480626Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:31:29.170164147Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:31:29.199042979Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:31:29.199153945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:31:29.219262025Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:31:29.219303558Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:31:29.219318639Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:31:29.21933023Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:31:29.219339672Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:31:34.23899832Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:31:34.267246198Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:31:34.267357436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:31:34.293585129Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:31:34.29364296Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:31:34.293670552Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:31:34.293777175Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:31:34.293790629Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:31:39.310817269Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:31:39.340992483Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:31:39.341124907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:31:39.360687534Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:31:39.360732186Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:31:39.360746311Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:31:39.360765078Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:31:39.360784157Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:31:44.383302328Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:31:44.414520761Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:31:44.414623774Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:31:44.438924396Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:31:44.438967886Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:31:44.438982783Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:31:44.439031455Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:31:44.439041964Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:31:49.456687863Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:31:49.486681538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:31:49.486797417Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:31:49.507129524Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:31:49.507184438Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:31:49.507198907Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:31:49.507211039Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:31:49.507219667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:31:54.529200376Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:31:54.557860245Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:31:54.557959121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:31:54.580356721Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:31:54.580398321Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:31:54.580413514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:31:54.580554192Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:31:54.580563816Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:31:59.601430931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:31:59.629972805Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:31:59.630073673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:31:59.650108871Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:31:59.650150235Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:31:59.650163871Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:31:59.650173978Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:31:59.650182599Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:32:04.669909414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:32:04.700057107Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:32:04.700291152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:32:04.727100582Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:32:04.727147264Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:32:04.72716206Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:32:04.727173389Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:32:04.727180995Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:32:09.747454247Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:32:09.778665342Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:32:09.77879184Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:32:09.798545836Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:32:09.798591445Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:32:09.798603981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:32:09.798637389Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:32:09.798646816Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:32:14.817114521Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:32:14.849729673Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:32:14.849843002Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:32:14.874265295Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:32:14.874304421Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:32:14.874319346Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:32:14.874330857Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:32:19.891981167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:32:19.920573537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:32:19.920677744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:32:19.942989089Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:32:19.94304338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:32:19.943057935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:32:19.943068566Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:32:19.94307659Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:32:24.96128862Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:32:24.990943565Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:32:24.991047072Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:32:25.014291413Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:32:25.014334582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:32:25.014348691Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:32:25.014385228Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:32:25.014394768Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:32:30.034850322Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:32:30.066516514Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:32:30.06663847Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:32:30.087575709Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:32:30.087637621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:32:30.087653627Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:32:30.087663868Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:32:30.087672456Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:32:35.101365723Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:32:35.130701832Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:32:35.130812534Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:32:35.154376095Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:32:35.154519472Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:32:35.154537752Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:32:35.154547252Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:32:35.154565329Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:32:40.173841834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:32:40.204512352Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:32:40.204636868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:32:40.227802722Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:32:40.227843959Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:32:40.227859336Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:32:40.227871599Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:32:40.227880884Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:32:45.248541369Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:32:45.276311469Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:32:45.276411203Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:32:45.298508269Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:32:45.298549808Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:32:45.298587641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:32:45.298598366Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:32:45.298606395Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:32:50.318644747Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:32:50.347571947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:32:50.34768973Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:32:50.377156207Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:32:50.377196943Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:32:50.377210681Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:32:50.377222905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:32:50.377232407Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:32:55.392322385Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:32:55.420904374Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:32:55.4210265Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:32:55.441451416Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:32:55.441892899Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:32:55.441920326Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:32:55.441956244Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:32:55.441967672Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:33:00.461998654Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:33:00.490216014Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:33:00.490344197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:33:00.509988475Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:33:00.510027763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:33:00.510041226Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:33:00.510052047Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:33:00.51006178Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:33:05.524794563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:33:05.55356244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:33:05.553688452Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:33:05.573874378Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:33:05.573917258Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:33:05.573931434Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:33:05.573941101Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:33:05.573951079Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:33:10.596275267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:33:10.625212237Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:33:10.625319729Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:33:10.648880854Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:33:10.648941145Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:33:10.648956724Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:33:10.648966247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:33:10.648974603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:33:15.670329217Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:33:15.698613041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:33:15.698702163Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:33:15.724082505Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:33:15.724129581Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:33:15.724153423Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:33:15.724165607Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:33:15.724173774Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:33:20.743903803Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:33:20.77542248Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:33:20.775549584Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:33:20.800250733Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:33:20.800292705Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:33:20.800308144Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:33:25.817914617Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:33:25.84872397Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:33:25.848817715Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:33:25.872329289Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:33:25.872371124Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:33:25.872384729Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:33:25.872394938Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:33:25.872403313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:33:30.889144476Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:33:30.926568843Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:33:30.926685977Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:33:30.949657693Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:33:30.949701542Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:33:30.949728292Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:33:35.965987493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:33:35.999079785Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:33:35.99917927Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:33:36.019518053Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:33:36.0195623Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:33:36.019578313Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:33:36.019590135Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:33:36.019599582Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:33:41.041957757Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:33:41.073397159Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:33:41.073507138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:33:41.095636008Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:33:46.113291867Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:33:46.144770211Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:33:46.144867888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:33:46.168763746Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:33:46.168807515Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:33:46.168820159Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:33:46.168831Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:33:46.168839602Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:33:51.189173997Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:33:51.219950875Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:33:51.220063716Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:33:51.245039903Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:33:51.245082136Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:33:51.245095697Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:33:51.245107853Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:33:51.245117052Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:33:56.263421527Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:33:56.297080828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:33:56.297174959Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:33:56.319042684Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:33:56.319090215Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:33:56.319105866Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:33:56.319145387Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:33:56.319154208Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:34:01.336279836Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:34:01.366787253Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:34:01.366891681Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:34:01.393535477Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:34:01.393582175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:34:01.393598376Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:34:01.393631517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:34:01.393640942Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:34:06.408301361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:34:06.438013702Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:34:06.438127591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:34:06.462436279Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:34:06.462490711Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:34:11.479287678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:34:11.509519796Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:34:11.50972575Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:34:11.532866843Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:34:11.532908991Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:34:11.532922787Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:34:11.532935109Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:34:11.532944441Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:34:16.546780489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:34:16.576567136Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:34:16.576672548Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:34:16.597580155Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:34:21.619989969Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:34:21.65558057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:34:21.655674182Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:34:21.678093281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:34:21.67813948Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:34:21.678153505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:34:21.678165857Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:34:21.678175119Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:34:26.698291417Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:34:26.727456264Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:34:26.727566324Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:34:26.747720227Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:34:26.747765298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:34:26.747779462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:34:26.747788926Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:34:26.747796972Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:34:31.768392186Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:34:31.797953787Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:34:31.798058424Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:34:31.824395489Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:34:31.824441818Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:34:31.824456781Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:34:31.824467759Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:34:31.824477759Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:34:36.841408413Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:34:36.868038055Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:34:36.868137482Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:34:36.892115956Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:34:36.892158971Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:34:36.892173604Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:34:36.89218536Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:34:36.892194455Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:34:41.91192816Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:34:41.941110928Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:34:41.941202275Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:34:41.963028064Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:34:41.963072236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:34:41.963086044Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:34:41.963098709Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:34:41.963107447Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:34:46.979391348Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:34:47.009116136Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:34:47.009223687Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:34:47.036806146Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:34:47.036851998Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:34:47.036866395Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:34:47.036878815Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:34:47.036888171Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:34:52.06152081Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:34:52.091746599Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:34:52.091837049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:34:52.11563597Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:34:52.115679207Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:34:52.115692902Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:34:57.132450126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:34:57.162188561Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:34:57.162306006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:34:57.18635488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:34:57.186397582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:34:57.186411029Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:34:57.186423223Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:34:57.186431839Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:35:02.201776824Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:35:02.232767934Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:35:02.232869058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:35:02.257417441Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:35:02.257466113Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:35:02.257480784Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:35:02.257492846Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:35:02.25750279Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:35:07.273153812Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:35:07.303114053Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:35:07.303205012Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:35:07.327252195Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:35:07.327292526Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:35:07.327307777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:35:07.327318046Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:35:07.327336475Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:35:12.342169631Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:35:12.370087716Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:35:12.37018573Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:35:12.392284393Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:35:12.392358569Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:35:12.392383904Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:35:12.39239391Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:35:12.392403633Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:35:17.410291234Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:35:17.439971001Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:35:17.440191129Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:35:17.465991363Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:35:17.466032155Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:35:17.466045273Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:35:17.466057568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:35:17.466067193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:35:22.486608055Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:35:22.516022308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:35:22.516116203Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:35:22.540938106Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:35:22.540990603Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:35:22.541007019Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:35:22.541017228Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:35:22.541025892Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:35:27.564960012Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:35:27.601692581Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:35:27.601786132Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:35:27.624809274Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:35:27.62485227Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:35:27.624867216Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:35:27.624877965Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:35:27.624886248Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:35:32.648308484Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:35:32.677757757Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:35:32.677855098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:35:32.701212668Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:35:32.701265584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:35:32.701280492Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:35:32.701291662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:35:32.701299653Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:35:37.720280931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:35:37.748665167Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:35:37.748774461Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:35:37.774505941Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:35:37.774547417Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:35:37.774561061Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:35:37.774571834Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:35:37.774579759Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:35:42.788195876Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:35:42.818484164Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:35:42.818580302Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:35:42.840942458Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:35:42.8409884Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:35:42.841001932Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:35:42.841012685Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:35:42.841022517Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:35:47.859051292Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:35:47.887569627Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:35:47.887710827Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:35:47.915286351Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:35:47.915342259Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:35:47.915357412Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:35:47.915368636Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:35:47.91537693Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:35:52.93617045Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:35:52.964701609Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:35:52.964821479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:35:52.985933311Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:35:52.985975118Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:35:52.98598835Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:35:52.985999976Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:35:52.986009432Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:35:58.000206482Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:35:58.032679175Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:35:58.032812598Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:35:58.057453098Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:35:58.057499321Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:35:58.057513522Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:35:58.057526044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:35:58.057536153Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:36:03.076756845Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:36:03.107805738Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:36:03.107925479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:36:03.131676717Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:36:03.131718003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:36:03.131731411Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:36:03.131743884Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:36:03.131753354Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:36:08.146082955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:36:08.175010412Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:36:08.175098011Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:36:08.201054385Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:36:08.201113005Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:36:08.20115091Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:36:08.20116213Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:36:08.201171058Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:36:13.223941403Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:36:13.253727866Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:36:13.253855437Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:36:13.275663889Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:36:13.275709872Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:36:13.275723037Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:36:13.275733078Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:36:13.275743344Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:36:18.292032621Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:36:18.325268276Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:36:18.325361113Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:36:18.349061296Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:36:18.349106294Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:36:18.34912016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:36:18.349132049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:36:18.349140953Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:36:23.367645673Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:36:23.397816866Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:36:23.397927597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:36:23.421519296Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:36:23.421563476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:36:23.421577286Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:36:23.421588522Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:36:23.421599352Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:36:28.442623101Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:36:28.473569723Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:36:28.473697016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:36:28.498461351Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:36:28.498501385Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:36:28.498524523Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:36:28.498536345Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:36:28.498546939Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:36:33.52229027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:36:33.550302995Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:36:33.55041416Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:36:33.573604474Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:36:33.573679797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:36:33.573704011Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:36:33.573714969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:36:33.573723961Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:36:38.588294928Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:36:38.61822734Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:36:38.61835737Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:36:38.641126241Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:36:38.641168337Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:36:38.641182309Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:36:38.641193547Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:36:38.641203603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:36:43.661071655Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:36:43.690578044Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:36:43.690687584Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:36:43.712363528Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:36:43.712408411Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:36:43.712421036Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:36:43.712544078Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:36:43.712555157Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:36:48.731700182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:36:48.761272446Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:36:48.761402899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:36:48.787605164Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:36:48.787647078Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:36:48.787670412Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:36:48.787682298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:36:53.803037219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:36:53.83450351Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:36:53.834598971Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:36:53.856577283Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:36:53.856620276Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:36:53.856633704Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:36:53.856644945Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:36:53.856654845Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:36:58.86937839Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:36:58.899526491Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:36:58.899635586Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:36:58.918952487Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:36:58.919427759Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:36:58.919577846Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:36:58.919594281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:36:58.919605352Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:37:03.940216722Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:37:03.968736974Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:37:03.968830608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:37:03.990996451Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:37:03.991061992Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:37:03.991076869Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:37:09.004804697Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:37:09.035317714Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:37:09.035431768Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:37:09.058969568Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:37:09.059012373Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:37:09.059026171Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:37:09.05903791Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:37:09.05904703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:37:14.079153967Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:37:14.109625579Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:37:14.109748359Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:37:14.133738921Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:37:14.133781484Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:37:14.133795629Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:37:14.133806749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:37:14.133815494Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:37:19.151221207Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:37:19.182009136Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:37:19.182207137Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:37:19.207031859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:37:19.207448476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:37:19.207470781Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:37:19.207484188Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:37:19.207495221Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:37:24.226892548Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:37:24.255607143Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:37:24.255695899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:37:24.278777638Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:37:24.27882965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:37:24.278843445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:37:24.27885358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:37:24.278861651Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:37:29.2960219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:37:29.325091482Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:37:29.325191655Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:37:29.350897041Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:37:29.350944668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:37:29.350960542Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:37:29.350971476Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:37:29.350978901Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:37:34.373291688Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:37:34.402347633Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:37:34.402435141Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:37:34.424178081Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:37:34.42421855Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:37:34.424264801Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:37:34.424276164Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:37:34.424284626Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:37:39.444074894Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:37:39.474699264Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:37:39.474787698Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:37:39.499333067Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:37:39.499401726Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:37:39.499417129Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:37:39.499449695Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:37:39.499458173Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:37:44.520278357Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:37:44.551336077Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:37:44.551448964Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:37:44.573900445Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:37:44.573943454Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:37:44.573956865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:37:44.573977257Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:37:44.573986301Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:37:49.590207491Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:37:49.618515499Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:37:49.618622465Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:37:49.645881426Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:37:49.645925143Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:37:49.645967384Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:37:49.645977815Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:37:49.645985733Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:37:54.661069824Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:37:54.690954522Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:37:54.6910419Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:37:54.714341471Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:37:54.714388507Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:37:54.714403175Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:37:54.714413649Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:37:54.714423131Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:37:59.735645816Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:37:59.763989914Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:37:59.764089055Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:37:59.789378324Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:37:59.789775804Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:37:59.789798207Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:37:59.789980676Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T18:37:59.790283031Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T18:37:59.790583943Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:37:59.790598851Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:38:04.807053816Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:38:04.837477644Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:38:04.83759175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:38:04.859568698Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:38:04.859612557Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:38:04.859625805Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:38:04.859636176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:38:04.859644062Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:38:09.875866318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:38:09.903572772Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:38:09.903676651Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:38:09.927198678Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:38:09.927268279Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:38:09.927283213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:38:09.927293075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:38:09.927301532Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:38:14.944289748Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:38:14.973107008Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:38:14.973215193Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:38:14.994595354Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:38:14.994645847Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:38:20.013283754Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:38:20.042209806Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:38:20.042318882Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:38:20.06466094Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:38:20.064710913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:38:20.064726177Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:38:20.064761131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:38:20.064770052Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:38:25.087042908Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:38:25.117291939Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:38:25.117422006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:38:25.143892834Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:38:25.143940383Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:38:25.143957514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:38:25.143966813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:38:25.14397363Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:38:30.166571768Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:38:30.198141523Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:38:30.198265955Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:38:30.223619086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:38:30.223662288Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:38:30.223678123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:38:30.223733753Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:38:30.223743048Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:38:35.238546784Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:38:35.269768471Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:38:35.269859052Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:38:35.295508448Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:38:35.295553939Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:38:35.295568008Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:38:35.2955798Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:38:35.295589249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:38:40.317280276Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:38:40.347252693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:38:40.347346994Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:38:40.370769821Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:38:40.370815915Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:38:40.370831737Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:38:40.370888487Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:38:40.370898275Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:38:45.391634905Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:38:45.421260369Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:38:45.421348007Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:38:45.44540664Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:38:45.445446183Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:38:45.445459972Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:38:45.445472507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:38:45.445481332Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:38:50.463992878Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:38:50.495564024Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:38:50.495685099Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:38:50.51843536Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:38:50.518476967Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:38:50.518491831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:38:50.518503384Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:38:50.518512222Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:38:55.538903791Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:38:55.567476129Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:38:55.567567443Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:38:55.592642199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:38:55.592693891Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:38:55.592709312Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:38:55.5927205Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:38:55.592728931Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:39:00.60871504Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:39:00.638157299Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:39:00.638262622Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:39:00.663334741Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:39:00.663376287Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:39:00.663401714Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:39:00.663413044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:39:00.663421064Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:39:05.67910358Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:39:05.710419305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:39:05.710554824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:39:05.735963543Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:39:05.736007892Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:39:05.736059355Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:39:05.736070182Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:39:05.736078321Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:39:10.755338994Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:39:10.784865964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:39:10.784982095Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:39:10.809857104Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:39:10.809899828Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:39:10.809913567Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:39:10.809926149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:39:10.809935546Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:39:15.83169022Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:39:15.860267034Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:39:15.860366004Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:39:15.885491004Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:39:15.885542265Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:39:15.885557886Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:39:15.885569501Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:39:15.885577941Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:39:20.903041049Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:39:20.933402255Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:39:20.933493809Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:39:20.956883546Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:39:20.956924996Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:39:20.956938773Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:39:20.956952583Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:39:20.956961618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:39:25.97930512Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:39:26.009597348Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:39:26.009699669Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:39:26.034526116Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:39:26.034567099Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:39:26.03460608Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:39:26.03468214Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:39:26.03469272Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:39:31.056285291Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:39:31.083595247Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:39:31.083697645Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:39:31.105100896Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:39:31.105142581Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:39:31.105157108Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:39:31.105169469Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:39:31.105178785Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:39:36.124577738Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:39:36.152695222Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:39:36.152792565Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:39:36.175741084Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:39:36.175784181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:39:36.175797423Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:39:36.175808923Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:39:36.175818692Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:39:41.191769494Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:39:41.219370306Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:39:41.219459443Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:39:41.241950782Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:39:41.241991332Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:39:41.242046994Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:39:41.242057833Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:39:41.242133384Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:39:46.25944898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:39:46.293550919Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:39:46.294099304Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:39:46.318591863Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:39:46.318635422Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:39:46.318649053Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:39:46.318660915Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:39:46.318670518Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:39:51.33801154Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:39:51.367909617Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:39:51.367998983Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:39:51.392079512Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:39:51.392135409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:39:51.39214963Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:39:51.392159079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:39:51.392167558Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:39:56.411887127Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:39:56.440335781Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:39:56.440537773Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:39:56.463738797Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:39:56.463780609Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:39:56.463794501Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:39:56.463804394Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:39:56.46381248Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:40:01.492729694Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:40:01.562631484Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:40:01.562751812Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:40:01.630658647Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:40:01.630703955Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:40:01.630718729Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:40:01.63075522Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:40:01.630763999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:40:06.644782102Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:40:06.686349732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:40:06.686474714Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:40:06.71027227Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:40:06.710336011Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:40:06.710361239Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:40:06.710371668Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:40:06.71037969Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:40:11.73128544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:40:11.759002526Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:40:11.759109198Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:40:11.783567702Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:40:11.783609186Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:40:11.783624158Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:40:11.783658251Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:40:11.78366719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:40:16.799249146Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:40:16.828144115Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:40:16.828252034Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:40:16.851230674Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:40:16.851288891Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:40:16.85130248Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:40:16.851313416Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:40:16.851322932Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:40:21.867930428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:40:21.90030235Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:40:21.900403155Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:40:21.92402112Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:40:21.924066552Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:40:21.924079872Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:40:21.924092261Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:40:21.924101233Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:40:26.939017211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:40:26.969707974Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:40:26.969812059Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:40:26.989520579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:40:26.989562168Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:40:26.989575793Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:40:26.989587355Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:40:26.989596085Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:40:32.00855904Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:40:32.038059583Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:40:32.038153746Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:40:32.062760846Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:40:32.062806064Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:40:32.062831907Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:40:32.062856907Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:40:32.06286661Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:40:37.077430926Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:40:37.108130442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:40:37.108259059Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:40:37.132891635Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:40:37.132944975Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:40:37.132960798Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:40:37.132972502Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:40:37.132981192Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:40:42.150473295Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:40:42.181617175Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:40:42.181736807Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:40:42.202915501Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:40:42.202961314Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:40:42.202975584Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:40:42.202986538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:40:42.202996062Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:40:47.22225908Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:40:47.251126647Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:40:47.251250082Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:40:47.279257025Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:40:47.279298933Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:40:47.279314275Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:40:47.279327397Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:40:47.279336933Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:40:52.296347291Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:40:52.323505537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:40:52.323598124Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:40:52.346500817Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:40:52.346542168Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:40:52.346556134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:40:52.346567733Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:40:52.346576868Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:40:57.36209927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:40:57.388135888Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:40:57.388253723Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:40:57.414556477Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:40:57.414598315Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:40:57.414613411Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:40:57.414626245Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:40:57.414634283Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:41:02.43228705Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:41:02.463190872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:41:02.463307617Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:41:02.485575933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:41:02.485633781Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:41:02.485648439Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:41:02.485658162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:41:02.485666486Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:41:07.501643684Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:41:07.533008924Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:41:07.533121667Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:41:07.558203275Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:41:07.558283005Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:41:07.558308912Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:41:07.558319955Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:41:07.558328698Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:41:12.574838511Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:41:12.605226407Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:41:12.605350126Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:41:12.627877499Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:41:12.627924263Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:41:12.627937904Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:41:12.627967608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:41:12.62797705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:41:17.644965268Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:41:17.67430664Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:41:17.674452043Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:41:17.701895158Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:41:17.701937673Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:41:17.701950661Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:41:17.701961879Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:41:17.701971837Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:41:22.718283114Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:41:22.747472734Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:41:22.747568286Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:41:22.769389066Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:41:22.769435421Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:41:22.769451201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:41:22.769462304Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:41:22.769472588Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:41:27.786314361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:41:27.815581307Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:41:27.815694456Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:41:27.838075756Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:41:27.838120164Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:41:27.838134336Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:41:27.838146326Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:41:27.838155888Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:41:32.85898452Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:41:32.888104653Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:41:32.888211135Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:41:32.912173212Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:41:32.912225982Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:41:32.912263943Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:41:32.912275049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:41:32.912282812Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:41:37.930298797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:41:37.961370064Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:41:37.961487212Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:41:37.987506515Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:41:37.987548858Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:41:37.987563095Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:41:37.987573533Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:41:37.98758335Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:41:43.007537407Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:41:43.036855677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:41:43.036951815Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:41:43.058071312Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:41:43.058116205Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:41:43.058131528Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:41:43.058144077Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:41:43.058152559Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:41:48.076051128Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:41:48.104735526Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:41:48.104838719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:41:48.128010458Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:41:48.128050985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:41:48.128074914Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:41:48.128084525Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:41:48.128092577Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:41:53.149630411Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:41:53.178360855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:41:53.178474017Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:41:53.203865539Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:41:53.20391432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:41:53.203929174Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:41:53.203940737Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:41:53.203949414Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:41:58.21859611Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:41:58.247535254Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:41:58.247654403Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:41:58.270722661Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:41:58.270766275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:41:58.270779974Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:41:58.270790063Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:41:58.270798738Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:42:03.289109363Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:42:03.321079023Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:42:03.321192565Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:42:03.34685597Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:42:03.346898241Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:42:03.346911576Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:42:03.346924028Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:42:03.346933251Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:42:08.366960841Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:42:08.397410724Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:42:08.397526115Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:42:08.419513923Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:42:08.41955593Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:42:08.41957171Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:42:08.419583498Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:42:08.419592024Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:42:13.444318804Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:42:13.473595912Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:42:13.473690849Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:42:13.497397119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:42:13.49744019Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:42:13.497454898Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:42:13.49746562Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:42:13.497475613Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:42:18.511700445Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:42:18.540728894Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:42:18.540821111Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:42:18.564871171Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:42:18.564912257Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:42:18.564925978Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:42:18.564964915Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:42:18.564973665Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:42:23.583414747Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:42:23.611124632Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:42:23.611214912Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:42:23.633340653Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:42:23.633384549Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:42:23.633399013Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:42:23.633410049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:42:23.633419502Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:42:28.649368809Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:42:28.677825411Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:42:28.677935869Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:42:28.704836987Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:42:28.704876422Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:42:28.704912911Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:42:28.704923728Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:42:28.704931951Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:42:33.721524388Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:42:33.751255679Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:42:33.751378702Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:42:33.771904965Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:42:33.771961434Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:42:33.771975614Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:42:33.771986106Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:42:33.771994122Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:42:38.792100532Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:42:38.821231167Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:42:38.821339252Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:42:38.845422915Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:42:38.845466584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:42:38.84548023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:42:38.845491333Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:42:38.845500824Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:42:43.860771078Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:42:43.892380839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:42:43.892595362Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:42:43.913414015Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:42:43.913457253Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:42:43.913471777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:42:43.91348457Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:42:43.913494082Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:42:48.929083613Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:42:48.958998075Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:42:48.959086924Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:42:48.982899339Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:42:48.982940973Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:42:48.982954352Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:42:48.982989971Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:42:48.982998989Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:42:54.006531912Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:42:54.03681075Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:42:54.036930638Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:42:54.061454165Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:42:54.061499836Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:42:54.06151369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:42:54.061546729Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:42:54.061557462Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:42:59.08146485Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:42:59.110812101Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:42:59.110926676Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:42:59.133764899Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:42:59.133807292Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:42:59.13382196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:42:59.133832415Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:42:59.133840882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:43:04.153559486Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:43:04.183213156Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:43:04.183331014Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:43:04.208514312Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:43:04.208581561Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:43:04.208595607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:43:04.20860584Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:43:04.208614428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:43:09.22276672Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:43:09.252345041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:43:09.252582343Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:43:09.275320087Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:43:09.275366263Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:43:09.275379904Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:43:09.275392675Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:43:09.275401408Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:43:14.298570417Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:43:14.326874694Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:43:14.326962049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:43:14.349351832Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:43:14.349404587Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:43:14.349419764Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:43:14.349430933Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:43:14.349439646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:43:19.370083637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:43:19.398611875Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:43:19.398714331Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:43:19.425010808Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:43:19.425056838Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:43:19.425072805Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:43:19.425119215Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:43:19.425131387Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:43:24.443491094Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:43:24.475439465Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:43:24.47554195Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:43:24.495601637Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:43:24.495656936Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:43:24.495673227Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:43:24.495683997Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:43:24.495691743Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:43:29.514007409Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:43:29.543369376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:43:29.543458413Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:43:29.567072692Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:43:29.567485094Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:43:29.567514283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:43:29.567544663Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:43:29.567552951Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:43:34.58438139Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:43:34.61317195Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:43:34.613285128Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:43:34.637955029Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:43:34.638000302Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:43:34.638013859Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:43:34.638024879Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:43:34.638035118Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:43:39.653079554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:43:39.68049707Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:43:39.680612902Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:43:39.70584259Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:43:39.705899088Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:43:39.70591477Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:43:39.705926755Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:43:39.705935253Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:43:44.724631305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:43:44.755657755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:43:44.755756962Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:43:44.778668849Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:43:44.778721144Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:43:44.778735683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:43:44.778746296Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:43:44.778754491Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:43:49.796693275Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:43:49.826228749Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:43:49.82637675Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:43:49.851012628Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:43:49.851056586Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:43:49.85106937Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:43:49.851080915Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:43:49.851089168Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:43:54.872919811Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:43:54.902300304Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:43:54.902413772Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:43:54.926727247Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:43:54.926770365Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:43:54.926783972Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:43:54.926794921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:43:54.926804585Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:43:59.948197527Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:43:59.978038052Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:43:59.97815624Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:43:59.998599712Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:43:59.999071705Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:43:59.999098102Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:43:59.999110611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:43:59.999121243Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:44:05.019997416Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:44:05.05150579Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:44:05.05160219Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:44:05.075414276Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:44:05.07581631Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:44:05.075840002Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:44:05.075853884Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:44:05.075865512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:44:10.095774118Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:44:10.127347761Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:44:10.127459184Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:44:10.151091084Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:44:10.151137488Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:44:10.151172993Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:44:10.151186232Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:44:10.151195169Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:44:15.176466057Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:44:15.206404659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:44:15.206494643Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:44:15.226433674Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:44:15.226491538Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:44:15.226505781Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:44:15.22651462Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:44:15.226522833Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:44:20.245339811Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:44:20.273891942Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:44:20.274015507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:44:20.298305762Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:44:20.298351054Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:44:20.298364531Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:44:20.298393523Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:44:20.298402294Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:44:25.319299101Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:44:25.348415272Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:44:25.348609227Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:44:25.372825732Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:44:25.372865674Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:44:25.372879544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:44:25.372924304Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:44:25.372934192Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:44:30.38805721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:44:30.419208161Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:44:30.419353223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:44:30.443730831Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:44:30.443771402Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:44:30.44378475Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:44:30.443796591Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:44:30.443805358Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:44:35.459322066Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:44:35.490649353Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:44:35.490766136Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:44:35.515143287Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:44:35.515188032Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:44:35.515202017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:44:35.515211673Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:44:35.515221977Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:44:40.535302769Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:44:40.565366452Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:44:40.565485781Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:44:40.585920347Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:44:40.585960338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:44:40.58597385Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:44:40.585985272Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:44:40.585995863Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:44:45.606212918Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:44:45.644857439Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:44:45.64495741Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:44:45.665155007Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:44:45.665210589Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:44:45.665266385Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:44:45.665302548Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:44:45.665379765Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:44:50.686519555Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:44:50.716992047Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:44:50.717091423Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:44:50.743173433Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:44:50.743217913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:44:50.743231092Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:44:50.743254058Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:44:50.743263417Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:44:55.763915526Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:44:55.79442928Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:44:55.794549957Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:44:55.819490889Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:44:55.819533355Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:44:55.819546508Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:44:55.819557697Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:44:55.81956752Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:45:00.8346255Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:45:00.864664264Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:45:00.864772551Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:45:00.889695929Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:45:00.889737595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:45:00.889767696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:45:00.88977887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:45:00.889787328Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:45:05.906310229Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:45:05.934311516Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:45:05.934403341Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:45:05.959210983Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:45:05.959276012Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:45:05.959318802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:45:05.95933036Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:45:05.959338599Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:45:10.98038772Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:45:11.009890935Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:45:11.010025574Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:45:11.035802664Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:45:11.036227071Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:45:11.036571865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:45:11.036831231Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T18:45:11.037045141Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T18:45:11.03742281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:45:11.037438418Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:45:16.052153646Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:45:16.081500823Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:45:16.08159694Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:45:16.106290967Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:45:16.10633582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:45:16.106350057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:45:16.106361708Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:45:16.10637123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:45:21.121800824Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:45:21.151783178Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:45:21.151886582Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:45:21.17618525Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:45:21.176228596Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:45:21.176254596Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:45:21.176289429Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:45:21.176297713Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:45:26.197101012Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:45:26.225322679Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:45:26.225444004Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:45:26.248041055Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:45:26.248082879Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:45:26.248096138Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:45:26.248136765Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:45:26.248145718Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:45:31.266279225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:45:31.295072822Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:45:31.295169686Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:45:31.319431142Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:45:31.319485432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:45:31.319500108Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:45:31.319510801Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:45:31.319518845Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:45:36.335264926Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:45:36.365929226Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:45:36.366030488Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:45:36.390136002Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:45:36.390193577Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:45:36.3902096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:45:36.390219675Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:45:36.390244635Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:45:41.406282Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:45:41.43389072Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:45:41.433981778Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:45:41.457807531Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:45:41.457849709Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:45:41.457862672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:45:41.457875398Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:45:41.457885261Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:45:46.47544958Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:45:46.503030243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:45:46.503113396Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:45:46.52680379Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:45:46.52684625Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:45:46.526861209Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:45:46.526903308Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:45:46.526911929Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:45:51.54511693Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:45:51.575277372Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:45:51.575360349Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:45:51.599163571Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:45:51.59920492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:45:51.599218268Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:45:51.599229923Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:45:51.599248756Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:45:56.615407513Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:45:56.644678734Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:45:56.644776722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:45:56.670073612Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:45:56.67011548Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:45:56.6701287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:45:56.670139263Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:45:56.670147967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:46:01.690278159Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:46:01.72137538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:46:01.721490815Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:46:01.747988488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:46:01.748034614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:46:01.748051694Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:46:01.748062238Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:46:01.74807216Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:46:06.76526484Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:46:06.795832009Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:46:06.795942185Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:46:06.822396226Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:46:06.822438906Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:46:06.822452253Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:46:06.822466035Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:46:06.822474037Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:46:11.841097856Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:46:11.870349349Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:46:11.870467581Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:46:11.893675415Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:46:11.893723193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:46:11.893737044Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:46:11.893767048Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:46:11.893776116Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:46:16.91070331Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:46:16.939013285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:46:16.939122757Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:46:16.962973193Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:46:16.963010323Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:46:16.963056136Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:46:16.963066413Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:46:16.96307476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:46:21.978640549Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:46:22.006702584Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:46:22.006809344Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:46:22.028802099Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:46:22.028860705Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:46:22.028875142Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:46:22.028887409Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:46:22.028895941Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:46:27.043952622Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:46:27.075032447Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:46:27.075140946Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:46:27.099171196Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:46:27.099218638Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:46:27.099276453Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:46:27.099289222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:46:27.099297608Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:46:32.115404481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:46:32.145927837Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:46:32.146035817Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:46:32.170522083Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:46:32.170562323Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:46:32.170577206Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:46:32.170587934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:46:32.17059721Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:46:37.187281105Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:46:37.217594524Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:46:37.217695011Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:46:37.246276213Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:46:37.246322649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:46:37.246337614Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:46:37.246350156Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:46:37.24636029Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:46:42.265027061Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:46:42.294029356Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:46:42.294134015Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:46:42.316817865Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:46:42.316860336Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:46:42.316922566Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:46:42.316943063Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:46:42.316952347Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:46:47.334296364Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:46:47.361748723Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:46:47.361853764Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:46:47.387744831Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:46:47.387799544Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:46:47.387813182Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:46:47.387822816Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:46:47.387830746Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:46:52.403089044Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:46:52.434330423Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:46:52.434427558Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:46:52.458363252Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:46:52.458407786Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:46:52.458422768Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:46:52.458433849Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:46:52.458443199Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:46:57.474994763Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:46:57.505348953Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:46:57.505454666Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:46:57.527216607Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:46:57.527270924Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:46:57.527285614Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:46:57.527319928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:46:57.527328448Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:47:02.546145565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:47:02.576820821Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:47:02.576964661Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:47:02.602092338Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:47:02.602136698Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:47:02.602150728Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:47:02.602162008Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:47:02.602172355Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:47:07.620818889Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:47:07.651192761Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:47:07.651311169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:47:07.674098109Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:47:07.674153267Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:47:07.674169432Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:47:07.674179328Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:47:07.674196451Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:47:12.693285618Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:47:12.72226807Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:47:12.722408254Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:47:12.745487431Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:47:12.745533437Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:47:12.745547248Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:47:12.745559423Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:47:12.745569575Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:47:17.764072478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:47:17.79543251Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:47:17.795523466Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:47:17.821830046Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:47:17.821875689Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:47:17.821890648Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:47:17.821901054Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:47:17.821910731Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:47:22.846127733Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:47:22.872713661Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:47:22.872823154Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:47:22.89538681Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:47:22.895431992Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:47:22.895445155Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:47:22.895456556Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:47:22.895466426Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:47:27.912142257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:47:27.939613803Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:47:27.939715188Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:47:27.963525694Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:47:27.963576404Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:47:27.963592392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:47:27.963602928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:47:27.963611018Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:47:32.979373716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:47:33.010354351Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:47:33.010509121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:47:33.034882558Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:47:33.034924227Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:47:33.034938076Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:47:33.034950661Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:47:33.034959805Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:47:38.052892707Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:47:38.083500439Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:47:38.083591231Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:47:38.110423923Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:47:38.11047175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:47:38.110485019Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:47:38.110495176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:47:38.11050424Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:47:43.129212791Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:47:43.158607149Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:47:43.158697196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:47:43.183554438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:47:43.183597403Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:47:43.183610677Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:47:48.19854167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:47:48.228968937Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:47:48.229056994Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:47:48.250734754Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:47:48.25077478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:47:48.250835432Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:47:48.250847687Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:47:48.250967203Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:47:53.27220074Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:47:53.30113023Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:47:53.301256253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:47:53.324804598Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:47:53.324845185Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:47:53.324860833Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:47:53.324872014Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:47:53.324881352Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:47:58.340937658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:47:58.371724962Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:47:58.371831756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:47:58.400941762Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:47:58.400984415Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:47:58.400999007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:47:58.401011076Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:47:58.401020291Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:48:03.418882428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:48:03.448882377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:48:03.448976644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:48:03.468886851Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:48:03.468945121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:48:03.468960597Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:48:03.468970386Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:48:03.468978813Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:48:08.487232609Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:48:08.517513927Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:48:08.517650772Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:48:08.539720845Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:48:08.539793714Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:48:08.539808377Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:48:08.539817771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:48:08.539825426Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:48:13.560376248Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:48:13.58950477Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:48:13.589593662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:48:13.614897317Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:48:13.61494103Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:48:13.614954998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:48:13.614966972Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:48:13.614976112Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:48:18.632308104Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:48:18.660880138Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:48:18.660982831Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:48:18.685126533Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:48:18.685178195Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:48:18.685192957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:48:18.685204384Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:48:18.685212472Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:48:23.704532311Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:48:23.735262431Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:48:23.735363626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:48:23.759846214Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:48:23.759889331Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:48:23.759903147Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:48:23.759914903Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:48:23.759923976Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:48:28.774191804Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:48:28.805077318Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:48:28.805199987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:48:28.826526361Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:48:28.826571381Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:48:28.826585799Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:48:28.826596387Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:48:28.826603637Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:48:33.842294213Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:48:33.868698401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:48:33.868807043Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:48:33.893431717Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:48:33.893516637Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:48:33.893534407Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:48:33.893575328Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:48:33.893584724Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:48:38.912829056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:48:38.9409481Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:48:38.941043175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:48:38.967413969Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:48:38.967458015Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:48:38.96747167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:48:38.967483565Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:48:38.967492996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:48:43.9892516Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:48:44.01904769Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:48:44.019146709Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:48:44.043876346Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:48:44.043919425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:48:44.043934087Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:48:44.043948448Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:48:44.04395675Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:48:49.060759443Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:48:49.089023591Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:48:49.089140922Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:48:49.111508262Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:48:49.111551898Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:48:49.111578638Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:48:49.111589602Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:48:49.11159768Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:48:54.130706634Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:48:54.161404844Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:48:54.161496518Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:48:54.183782345Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:48:54.183824246Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:48:54.183837349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:48:54.183848979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:48:54.183857894Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:48:59.204267821Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:48:59.235939849Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:48:59.236065122Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:48:59.262867711Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:48:59.262912208Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:48:59.262926802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:48:59.262937905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:48:59.262947039Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:49:04.282268834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:49:04.310490336Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:49:04.310600721Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:49:04.336867681Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:49:04.336923107Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:49:04.336937817Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:49:04.33696786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:49:04.336985965Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:49:09.35713477Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:49:09.386691348Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:49:09.38680609Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:49:09.411721209Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:49:09.411765849Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:49:09.411778544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:49:09.411788664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:49:09.411799385Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:49:14.431839887Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:49:14.462349836Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:49:14.462462483Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:49:14.483919111Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:49:14.483970217Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:49:14.483986015Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:49:14.484027179Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:49:14.484036491Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:49:19.499710454Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:49:19.530430811Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:49:19.530523699Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:49:19.551936649Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:49:19.551978583Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:49:19.551992242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:49:19.552004406Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:49:19.552017646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:49:24.56738574Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:49:24.598448823Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:49:24.598552858Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:49:24.618215284Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:49:24.618266878Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:49:24.618314734Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:49:24.618325553Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:49:24.618334026Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:49:29.635564444Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:49:29.665716035Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:49:29.665812416Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:49:29.687397759Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:49:29.68744423Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:49:29.687459486Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:49:29.687469883Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:49:29.68747668Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:49:34.70427442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:49:34.732830553Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:49:34.732942324Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:49:34.754812157Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:49:34.754856457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:49:34.754886636Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:49:34.754898901Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:49:34.754906895Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:49:39.774373291Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:49:39.803933373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:49:39.80402456Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:49:39.828725592Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:49:39.8287787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:49:39.828793805Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:49:39.828803379Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:49:39.828811258Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:49:44.846197798Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:49:44.876277733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:49:44.876511046Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:49:44.900793222Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:49:44.900838523Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:49:44.900852275Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:49:44.900862888Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:49:44.900873435Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:49:49.918408654Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:49:49.94687262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:49:49.946959837Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:49:49.971199609Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:49:49.971260402Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:49:49.971276096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:49:49.971286983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:49:49.971295266Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:49:54.988651338Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:49:55.019923739Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:49:55.020046904Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:49:55.046090446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:49:55.046135933Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:49:55.046150266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:49:55.046162026Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:49:55.046172418Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:50:00.105750822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:50:00.203945732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:50:00.204049336Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:50:00.235676135Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:50:00.235721776Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:50:00.235735869Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:50:00.23577257Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:50:00.235781061Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:50:05.254297496Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:50:05.28284145Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:50:05.282953405Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:50:05.305779135Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:50:05.305836452Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:50:05.305851132Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:50:05.305895396Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:50:05.305905478Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:50:10.322510165Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:50:10.34977583Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:50:10.349886289Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:50:10.376895134Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:50:10.377292815Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:50:10.377314399Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:50:10.37732751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:50:10.37733947Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:50:15.397698708Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:50:15.425577166Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:50:15.425679102Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:50:15.450736923Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:50:15.451158077Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:50:15.45118197Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:50:15.451194874Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:50:15.451206238Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:50:20.470281041Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:50:20.499355193Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:50:20.499451006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:50:20.520557189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:50:20.520610378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:50:20.520625702Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:50:20.520636834Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:50:20.520645403Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:50:25.54373319Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:50:25.572892712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:50:25.573006495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:50:25.593033077Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:50:25.593472745Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:50:25.593491262Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:50:25.593499468Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:50:25.593508308Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:50:30.613382184Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:50:30.644066957Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:50:30.644184485Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:50:30.664524165Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:50:30.66457404Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:50:30.664588289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:50:30.664599176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:50:30.664609748Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:50:35.679855679Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:50:35.71110264Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:50:35.711211516Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:50:35.731969705Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:50:35.732013906Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:50:35.732027815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:50:35.732039687Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:50:35.732049288Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:50:40.752277632Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:50:40.782879966Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:50:40.782998335Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:50:40.808708759Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:50:40.808753978Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:50:40.808768474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:50:40.808780601Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:50:40.808789729Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:50:45.823092043Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:50:45.851251311Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:50:45.851340889Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:50:45.875159051Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:50:50.892280137Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:50:50.920285399Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:50:50.920596734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:50:50.940745534Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:50:50.940790466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:50:50.940804762Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:50:50.940816877Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:50:50.940828192Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:50:55.961576395Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:50:55.990814597Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:50:55.990903136Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:50:56.013210182Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:50:56.013293565Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:50:56.013334826Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:50:56.013345592Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:50:56.013354813Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:51:01.034886607Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:51:01.067226027Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:51:01.067365327Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:51:01.094142866Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:51:01.094186965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:51:06.1112885Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:51:06.141669536Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:51:06.141792358Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:51:06.165029534Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:51:06.165069888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:51:06.165083618Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:51:06.165095599Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:51:06.165105495Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:51:11.189263401Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:51:11.218181205Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:51:11.218276656Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:51:11.241949876Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:51:11.241992518Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:51:11.24204702Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:51:11.242060543Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:51:11.242068884Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:51:16.263289743Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:51:16.292012106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:51:16.292119945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:51:16.315399794Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:51:16.315443159Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:51:16.315458541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:51:16.315470507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:51:16.315480214Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:51:21.332277789Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:51:21.360051909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:51:21.360171436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:51:21.381429457Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:51:21.381477724Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:51:21.381492192Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:51:21.381502987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:51:21.381512017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:51:26.400269506Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:51:26.428949319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:51:26.429064118Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:51:26.450039441Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:51:26.450083347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:51:26.450097719Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:51:26.450110056Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:51:26.450119189Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:51:31.472294263Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:51:31.499863419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:51:31.499973134Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:51:31.525129257Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:51:31.525172221Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:51:31.525186745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:51:31.52521896Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:51:31.525228875Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:51:36.538934299Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:51:36.569207142Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:51:36.569336272Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:51:36.594832502Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:51:36.594890296Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:51:36.594904191Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:51:36.594914512Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:51:36.594922317Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:51:41.615277549Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:51:41.645195133Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:51:41.645307459Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:51:41.669265828Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:51:41.669306274Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:51:41.669320309Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:51:41.669331875Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:51:41.669341608Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:51:46.684567515Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:51:46.715600129Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:51:46.715698716Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:51:46.736360772Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:51:46.736402931Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:51:46.736423438Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:51:46.736435221Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:51:46.736444396Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:51:51.759293299Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:51:51.790117956Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:51:51.790208417Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:51:51.812409684Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:51:51.812588156Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:51:51.812603976Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:51:51.812614905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:51:51.812623452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:51:56.828229919Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:51:56.859907636Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:51:56.859998386Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:51:56.88339665Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:51:56.883439264Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:51:56.883453438Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:51:56.883465113Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:51:56.883473249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:52:01.918853161Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:52:02.026321688Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:52:02.026451696Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:52:02.130021958Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:52:02.130072156Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:52:02.130087044Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:52:02.13009665Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:52:02.130106267Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:52:07.14471627Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:52:07.174586844Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:52:07.174699324Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:52:07.198421444Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:52:07.19846649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:52:07.198481765Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:52:07.198529127Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:52:07.198539106Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:52:12.220280378Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:52:12.24905991Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:52:12.249166889Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:52:12.271971322Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:52:12.272014005Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:52:12.272080179Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:52:12.272092539Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:52:12.272102323Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:52:17.287087519Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:52:17.316754027Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:52:17.316863466Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:52:17.340401596Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:52:17.340520366Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:52:17.340539448Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:52:17.340550993Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:52:17.34055949Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:52:22.358297692Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:52:22.390492032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:52:22.39060129Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:52:22.417335371Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:52:22.417377134Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:52:22.417390105Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:52:22.41740297Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:52:22.417412923Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:52:27.433162423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:52:27.464258284Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:52:27.464366354Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:52:27.487755467Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:52:27.487798424Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:52:27.487813231Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:52:27.487823233Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:52:27.487832987Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:52:32.50315335Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:52:32.534778759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:52:32.534891892Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:52:32.554040667Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:52:32.554087176Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:52:32.55410167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:52:32.554136608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:52:32.554145904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:52:37.574010904Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:52:37.603911636Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:52:37.604019807Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:52:37.629887399Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:52:37.629931521Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:52:37.629946413Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:52:37.629956944Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:52:37.629967493Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:52:42.647187627Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:52:42.67481835Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:52:42.674937156Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:52:42.695960862Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:52:42.696003614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:52:42.696017348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:52:42.696027517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:52:42.696035828Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:52:47.711824486Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:52:47.740040724Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:52:47.740129031Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:52:47.76452918Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:52:47.76457047Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:52:47.764583365Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:52:47.76459362Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:52:47.764601824Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:52:52.78563757Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:52:52.815607802Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:52:52.815712766Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:52:52.840525484Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:52:52.840569317Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:52:52.840583914Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:52:52.840595933Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:52:52.840604917Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:52:57.857387662Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:52:57.886649468Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:52:57.886759477Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:52:57.906043934Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:52:57.906099003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:52:57.906136401Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:52:57.906146958Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:52:57.906154907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:53:02.926454533Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:53:02.956994739Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:53:02.957090348Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:53:02.980580816Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:53:02.980645708Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:53:02.980660355Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:53:02.980670344Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:53:02.980678324Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:53:07.996764162Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:53:08.028780397Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:53:08.028876311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:53:08.055410563Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:53:08.055455274Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:53:08.055469067Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:53:08.055480985Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:53:08.055489653Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:53:13.074094896Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:53:13.103894048Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:53:13.10400349Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:53:13.12961406Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:53:13.129660907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:53:13.129675609Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:53:13.129686553Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:53:13.129695852Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:53:18.145962401Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:53:18.177836991Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:53:18.177937634Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:53:18.201499718Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:53:18.201542003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:53:18.20155606Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:53:18.201571625Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:53:18.201581256Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:53:23.218614423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:53:23.248835443Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:53:23.24893826Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:53:23.272759479Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:53:23.272801257Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:53:23.272839215Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:53:23.272851119Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:53:23.272859219Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:53:28.291191306Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:53:28.321149271Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:53:28.321282345Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:53:28.341960308Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:53:28.342000734Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:53:28.342014874Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:53:28.342037594Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:53:28.342045455Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:53:33.362075031Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:53:33.393607064Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:53:33.393713279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:53:33.417230417Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:53:33.417291239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:53:33.417306519Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:53:33.417316907Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:53:33.417325985Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:53:38.430712481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:53:38.461507278Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:53:38.461594673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:53:38.48434126Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:53:38.484382887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:53:38.484396198Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:53:38.484503003Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:53:38.484514999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:53:43.500404162Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:53:43.528333428Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:53:43.528526897Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:53:43.551830257Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:53:43.551872987Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:53:43.552072564Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T18:53:43.551954589Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:53:43.552203732Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:53:43.552214917Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:53:48.566301227Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:53:48.594530411Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:53:48.594638483Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:53:48.617262512Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:53:48.617332271Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:53:48.617346696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:53:48.617356595Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:53:48.617364987Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:53:53.635370951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:53:53.66665049Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:53:53.666776215Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:53:53.688382891Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:53:53.688424388Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:53:53.688542147Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:53:53.688553685Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:53:53.688563181Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:53:58.708842594Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:53:58.738562405Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:53:58.738652625Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:53:58.763308289Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:53:58.763351393Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:53:58.763365635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:53:58.763377405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:53:58.763386564Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:54:03.781111101Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:54:03.8096995Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:54:03.809792575Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:54:03.831676765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:54:03.831719631Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:54:03.831733688Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:54:03.83174667Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:54:03.831764332Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:54:08.852702082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:54:08.887141235Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:54:08.887276475Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:54:08.906153868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:54:08.906204418Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:54:08.906218302Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:54:08.906229963Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:54:08.906389648Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:54:13.929057793Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:54:13.957671003Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:54:13.957786193Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:54:13.97816172Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:54:13.978205366Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:54:13.978219483Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:54:13.978230667Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:54:13.978251714Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:54:18.996631312Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:54:19.02769284Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:54:19.027795841Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:54:19.051494635Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:54:19.051538056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:54:19.051553151Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:54:19.051564154Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:54:19.051573525Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:54:24.071817283Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:54:24.114168632Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:54:24.114289671Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:54:24.134365595Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:54:24.134407378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:54:24.134421308Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:54:24.134433212Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:54:24.134442306Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:54:29.148894268Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:54:29.17958793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:54:29.179706239Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:54:29.204350889Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:54:29.20439134Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:54:29.20440538Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:54:29.20441784Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:54:29.204426763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:54:34.220274013Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:54:34.247291981Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:54:34.247405902Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:54:34.267116348Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:54:34.267157357Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:54:34.267186869Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:54:34.267198411Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:54:34.267206375Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:54:39.284822557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:54:39.314968628Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:54:39.31506206Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:54:39.337260027Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:54:39.337324012Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:54:39.337340928Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:54:39.337351802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:54:39.337376915Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:54:44.357094264Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:54:44.38926401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:54:44.389355557Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:54:44.411448985Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:54:44.411491789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:54:44.411507099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:54:44.411536592Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:54:44.411545876Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:54:49.428616468Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:54:49.458957731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:54:49.459056682Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:54:49.479745042Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:54:49.479802215Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:54:49.479816704Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:54:49.479826647Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:54:49.479834983Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:54:54.501294379Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:54:54.531664684Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:54:54.531761707Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:54:54.557479468Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:54:54.557523593Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:54:54.55753797Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:54:54.557549641Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:54:54.557558956Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:54:59.576315728Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:54:59.603352969Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:54:59.603486555Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:54:59.626491898Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:54:59.626549017Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:54:59.626563789Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:54:59.626574418Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:54:59.62658229Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:55:04.647543396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:55:04.675622355Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:55:04.675722095Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:55:04.701188286Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:55:04.701246032Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:55:04.701260583Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:55:04.701271427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:55:04.70128034Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:55:09.720269089Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:55:09.750113396Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:55:09.750201659Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:55:09.774392964Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:55:09.774435477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:55:09.774470069Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:55:09.774481294Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:55:09.774489145Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:55:14.789548484Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:55:14.818982416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:55:14.819091785Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:55:14.847792818Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:55:14.847835947Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:55:14.847848927Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:55:14.847859128Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:55:14.847868295Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:55:19.868382662Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:55:19.897687027Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:55:19.897802274Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:55:19.922431506Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:55:19.922472775Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:55:19.922486474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:55:19.922497984Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:55:19.922507472Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:55:24.939180779Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:55:24.967764271Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:55:24.967854696Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:55:24.99177306Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:55:24.991825311Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:55:24.991840108Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:55:24.991851999Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:55:24.991861364Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:55:30.009312318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:55:30.038415669Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:55:30.038534644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:55:30.060551721Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:55:30.060601564Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:55:30.060615572Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:55:30.060628591Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:55:30.060637728Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:55:35.078480589Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:55:35.110356358Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:55:35.110479147Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:55:35.13580308Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:55:35.135844269Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:55:35.135881534Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:55:35.135891297Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:55:35.135899001Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:55:40.152712603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:55:40.183360945Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:55:40.183462053Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:55:40.207729472Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:55:45.22629079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:55:45.25611966Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:55:45.256280196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:55:45.280973596Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:55:45.281437122Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:55:45.281655358Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:55:45.28183781Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:55:45.281852354Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:55:50.299302777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:55:50.329406053Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:55:50.329523075Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:55:50.350622276Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:55:50.350664283Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:55:50.350679208Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:55:50.350700886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:55:50.350709713Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:55:55.366930037Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:55:55.397171502Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:55:55.397290927Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:55:55.420350622Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:55:55.420392531Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:55:55.420525639Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:55:55.420553265Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:55:55.420562014Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:56:00.441265188Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:56:00.468298171Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:56:00.468385807Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:56:00.489593987Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:56:00.489636654Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:56:00.489649901Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:56:00.489660285Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:56:00.489683015Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:56:05.506270399Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:56:05.535967358Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:56:05.536060593Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:56:05.55761808Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:56:05.557663881Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:56:05.557677861Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:56:05.557701129Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:56:10.571208892Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:56:10.601411952Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:56:10.601525866Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:56:10.623376986Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:56:10.623421394Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:56:10.623435883Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:56:10.623447411Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:56:10.623467051Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:56:15.642832555Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:56:15.671016775Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:56:15.671130353Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:56:15.691725164Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:56:15.691867817Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:56:15.691886008Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:56:15.691908087Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:56:15.691918136Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:56:20.704321678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:56:20.73375957Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:56:20.733877984Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:56:20.758808013Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:56:20.75885Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:56:20.75886426Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:56:20.758875591Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:56:25.779626948Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:56:25.808665095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:56:25.808775501Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:56:25.83293167Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:56:25.832977498Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:56:25.832991741Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:56:25.833004388Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:56:25.833014362Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:56:30.854069395Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:56:30.882745168Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:56:30.882844065Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:56:30.907624194Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:56:30.907682179Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:56:30.907696919Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:56:30.907708552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:56:30.90771661Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:56:35.924299401Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:56:35.953101444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:56:35.953194442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:56:35.97950431Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:56:35.979571909Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:56:35.979585966Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:56:35.979604666Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:56:35.979611571Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:56:40.996152279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:56:41.026383482Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:56:41.026478535Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:56:41.050298983Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:56:41.05034178Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:56:41.050379926Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:56:41.050392534Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:56:41.050400975Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:56:46.069169018Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:56:46.096706778Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:56:46.096843938Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:56:46.121031854Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:56:46.121074739Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:56:46.121105814Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:56:46.121115835Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:56:46.121124409Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:56:51.137222818Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:56:51.166059551Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:56:51.166152714Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:56:51.186704371Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:56:51.186762826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:56:51.186777616Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:56:51.186789352Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:56:51.186800025Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:56:56.203780843Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:56:56.232912895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:56:56.233007041Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:56:56.255854958Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:56:56.256310406Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:56:56.256658065Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:56:56.256679466Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:56:56.256691546Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:57:01.276214606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:57:01.307192015Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:57:01.307319832Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:57:01.332063923Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:57:01.332111405Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:57:01.332126518Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:57:01.332139032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:57:01.332148381Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:57:06.346620891Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:57:06.376659909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:57:06.376755741Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:57:06.400951042Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:57:06.401008898Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:57:06.401023283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:57:06.401032478Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:57:06.401040874Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:57:11.416689716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:57:11.445432095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:57:11.445519114Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:57:11.466596496Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:57:11.466651228Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:57:11.466666994Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:57:11.46667855Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:57:11.466687111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:57:16.480678271Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:57:16.510819872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:57:16.510912599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:57:16.537499515Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:57:16.537542451Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:57:16.537556963Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:57:16.537567186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:57:16.537575525Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:57:21.557857961Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:57:21.587992147Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:57:21.588080408Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:57:21.610527282Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:57:21.6105915Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:57:21.610605372Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:57:21.610614806Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:57:21.610622778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:57:26.623746821Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:57:26.650455103Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:57:26.650542915Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:57:26.673298301Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:57:26.673341376Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:57:26.673355385Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:57:26.673365586Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:57:26.673375467Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:57:31.687923268Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:57:31.718515824Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:57:31.718676787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:57:31.740367401Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:57:31.740528029Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:57:31.740546988Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:57:31.740583553Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:57:31.740592722Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:57:36.758266354Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:57:36.787969297Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:57:36.788082202Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:57:36.811689045Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:57:36.812122067Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:57:36.81214536Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:57:36.812157421Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:57:36.812168285Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:57:41.832018207Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:57:41.861155787Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:57:41.861279265Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:57:41.881491597Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:57:41.881537577Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:57:41.881577046Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:57:41.88158746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:57:41.88159554Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:57:46.898109138Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:57:46.927435655Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:57:46.927525594Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:57:46.952179791Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:57:46.952219468Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:57:46.952253881Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:57:46.952266034Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:57:46.95227406Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:57:51.969518688Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:57:51.998416863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:57:51.998510564Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:57:52.021582299Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:57:52.021641029Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:57:52.021656369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:57:52.02166781Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:57:52.021676247Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:57:57.03720347Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:57:57.066740916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:57:57.066838551Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:57:57.094415764Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:57:57.09446188Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:58:02.115143318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:58:02.148279124Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:58:02.148377943Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:58:02.173209507Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:58:02.17329436Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:58:02.173310319Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:58:02.173337338Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:58:02.173347112Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:58:07.188128123Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:58:07.218577964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:58:07.218673691Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:58:07.243544796Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:58:07.243595555Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:58:07.24360985Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:58:07.24365776Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:58:07.243668157Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:58:12.262848689Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:58:12.295387445Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:58:12.295481049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:58:12.320194168Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:58:12.320253071Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:58:12.320268885Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:58:12.320281214Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:58:12.320290721Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:58:17.336282303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:58:17.365211688Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:58:17.365349708Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:58:17.389081107Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:58:17.38913197Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:58:17.389145877Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:58:17.389158453Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:58:17.389167114Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:58:22.407158429Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:58:22.437934472Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:58:22.438057094Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:58:22.462603907Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:58:22.462648175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:58:22.462662748Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:58:22.462673374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:58:22.46268385Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:58:27.480723683Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:58:27.510128078Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:58:27.510217049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:58:27.534158003Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:58:27.534207162Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:58:27.53422347Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:58:27.534286368Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:58:27.534306413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:58:32.551998759Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:58:32.581709455Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:58:32.581815034Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:58:32.605877778Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:58:32.60591996Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:58:32.605933409Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:58:32.605944325Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:58:32.605953751Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:58:37.621190822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:58:37.651469955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:58:37.651597014Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:58:37.676108014Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:58:37.67615316Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:58:37.676269667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:58:37.67628519Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:58:37.676293881Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:58:42.695877721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:58:42.724915029Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:58:42.725008716Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:58:42.748552772Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:58:42.7485946Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:58:42.748608173Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:58:47.766287586Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:58:47.79640559Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:58:47.796625779Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:58:47.81706052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:58:47.817107077Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:58:47.817139753Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:58:47.817151128Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:58:47.817160149Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:58:52.836014243Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:58:52.866941356Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:58:52.867074912Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:58:52.890173186Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:58:52.890212554Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:58:52.890225872Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:58:52.890255758Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:58:52.890264681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:58:57.908565468Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:58:57.93596729Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:58:57.936079982Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:58:57.956749011Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:58:57.956798738Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:58:57.956813909Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:58:57.95682375Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:58:57.956833337Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:59:02.97805687Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:59:03.009151794Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:59:03.009277927Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:59:03.031516303Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:59:03.031575618Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:59:03.031590868Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:59:03.03160114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:59:03.031610035Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:59:08.047673243Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:59:08.075945213Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:59:08.076053684Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:59:08.096262107Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:59:08.096302473Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:59:08.096316488Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:59:08.096327081Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:59:08.096336361Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:59:13.118753704Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:59:13.145121718Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:59:13.145262812Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:59:13.164706532Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:59:13.16476112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:59:13.16479935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:59:13.164834203Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:59:13.164844504Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:59:18.179194436Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:59:18.208829219Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:59:18.208925012Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:59:18.229372817Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:59:18.229415949Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:59:18.229430166Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:59:18.229443645Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:59:18.229452632Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:59:23.249264396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:59:23.279232422Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:59:23.279362909Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:59:23.302680099Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:59:23.302725505Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:59:23.3027402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:59:23.302750699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:59:23.302761454Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:59:28.321010172Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:59:28.351878954Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:59:28.351994778Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:59:28.378138525Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:59:28.378184387Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:59:28.378198979Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:59:28.378210608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:59:28.378220123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:59:33.401270575Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:59:33.426990241Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:59:33.42708865Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:59:33.450655835Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:59:33.45073067Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:59:33.450744967Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:59:33.450755056Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:59:33.450884026Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:59:38.469376552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:59:38.496786104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:59:38.496905537Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:59:38.521288663Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:59:38.521330794Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:59:38.521343843Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:59:38.521357322Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:59:38.521366614Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:59:43.540155125Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:59:43.570321464Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:59:43.570421687Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:59:43.592269964Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:59:43.592310954Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:59:43.592324204Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:59:43.592335285Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:59:48.608943546Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:59:48.638836488Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:59:48.63892801Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:59:48.663083831Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:59:48.663127342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:59:48.663140666Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:59:48.663152317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:59:48.663161742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:59:53.679350092Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:59:53.708815963Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:59:53.708911821Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:59:53.732279237Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:59:53.732321084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:59:53.732333808Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:59:53.732345012Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:59:53.732354117Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T18:59:58.748573821Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T18:59:58.780981822Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T18:59:58.781090859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T18:59:58.80836221Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T18:59:58.808404787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T18:59:58.80841879Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T18:59:58.808503683Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T18:59:58.808514534Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:00:03.844701686Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:00:03.900173272Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:00:03.900577742Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:00:03.935318794Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:00:03.935359699Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:00:08.957786135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:00:08.987764548Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:00:08.987848778Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:00:09.013881279Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:00:09.013922666Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:00:09.013936827Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:00:09.013947141Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:00:09.013955517Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:00:14.030384216Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:00:14.059454915Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:00:14.059575885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:00:14.083957699Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:00:14.084000072Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:00:14.084014127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:00:14.084025821Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:00:14.084035068Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:00:19.102224405Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:00:19.129508898Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:00:19.129619342Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:00:19.155924611Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:00:19.155968259Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:00:19.155982088Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:00:19.155992402Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:00:19.15600263Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:00:24.174504776Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:00:24.209744308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:00:24.20984816Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:00:24.232522582Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:00:24.232567958Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:00:24.232581635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:00:29.249707348Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:00:29.277979968Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:00:29.278122453Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:00:29.303178164Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:00:29.303220426Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:00:29.303245564Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:00:29.303257553Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:00:29.303265897Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:00:34.319559522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:00:34.349341789Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:00:34.349435604Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:00:34.373854596Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:00:34.373897857Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:00:34.373912713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:00:34.373922312Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:00:34.373931609Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:00:39.391821763Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:00:39.423893899Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:00:39.424033033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:00:39.444991671Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:00:39.44503533Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:00:39.445050861Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:00:39.445062801Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:00:39.445072961Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:00:44.461280764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:00:44.492258073Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:00:44.492385868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:00:44.513569747Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:00:44.513614624Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:00:44.513628072Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:00:44.513639922Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:00:44.513650034Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:00:49.530045847Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:00:49.559761496Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:00:49.559843694Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:00:49.581775903Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:00:49.581847558Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:00:49.58187569Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:00:49.581887377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:00:49.58189856Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:00:54.603940682Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:00:54.634078098Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:00:54.634209017Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:00:54.657387073Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:00:54.657445414Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:00:54.65746233Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:00:54.657473865Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:00:54.657482487Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:00:59.678923877Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:00:59.706902895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:00:59.707024591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:00:59.730845825Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:00:59.730899989Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:01:04.747552709Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:01:04.77635115Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:01:04.776502142Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:01:04.797615327Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:01:04.797661686Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:01:04.797689014Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:01:04.797700824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:01:04.797709666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:01:09.81643571Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:01:09.84489865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:01:09.845004197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:01:09.865914739Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:01:09.865978265Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:01:09.865992403Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:01:09.866001849Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:01:09.866010974Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:01:14.885759302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:01:14.91787002Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:01:14.918047036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:01:14.940034144Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:01:14.940091292Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:01:14.940106701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:01:14.940115926Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:01:14.940123923Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:01:19.962485103Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:01:19.991690278Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:01:19.991793661Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:01:20.01416765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:01:20.014213306Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:01:20.014228569Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:01:20.014251215Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:01:20.014260428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:01:25.031885905Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:01:25.061044669Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:01:25.061162077Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:01:25.085889166Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:01:25.085932387Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:01:25.085946192Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:01:25.085955824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:01:25.085964013Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:01:30.104288478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:01:30.134388762Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:01:30.13451106Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:01:30.161785636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:01:30.161827261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:01:30.161840805Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:01:30.161851843Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:01:30.161860425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:01:35.180895728Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:01:35.210433075Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:01:35.210536053Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:01:35.232752226Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:01:35.232795908Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:01:35.232810099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:01:35.232820868Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:01:35.232829677Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:01:40.248277801Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:01:40.277819364Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:01:40.277913597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:01:40.300751546Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:01:40.300815024Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:01:40.300829779Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:01:40.300841346Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:01:40.300850288Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:01:45.319893933Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:01:45.349939001Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:01:45.350043868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:01:45.371863598Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:01:45.371907338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:01:45.371920634Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:01:45.371933639Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:01:45.371942834Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:01:50.391498393Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:01:50.422776746Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:01:50.422898957Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:01:50.447696413Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:01:50.447782163Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:01:50.447798602Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:01:50.447808779Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:01:50.447817311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:01:55.463438075Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:01:55.493184049Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:01:55.493288427Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:01:55.518288718Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:01:55.518333474Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:01:55.518347042Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:01:55.518358547Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:01:55.51836742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:02:00.536625605Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:02:00.567592547Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:02:00.567693483Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:02:00.5920695Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:02:00.592113385Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:02:00.592148418Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:02:00.592159419Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:02:00.592168127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:02:05.605771268Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:02:05.636756579Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:02:05.636859634Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:02:05.658062092Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:02:05.658119763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:02:05.658136177Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:02:05.658159821Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:02:05.658254253Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T19:02:05.658231295Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:02:10.677782204Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:02:10.70653376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:02:10.706658772Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:02:10.728169499Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:02:10.728223476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:02:10.728272753Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:02:10.728284274Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:02:10.728293161Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:02:15.745785808Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:02:15.77805702Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:02:15.778155154Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:02:15.803903715Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:02:15.803948921Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:02:15.803963067Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:02:15.803975332Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:02:15.80398513Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:02:20.825383703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:02:20.854941768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:02:20.855041737Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:02:20.875369409Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:02:20.875411591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:02:20.875426584Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:02:20.875476608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:02:20.875486473Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:02:25.893970781Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:02:25.924259793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:02:25.924364317Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:02:25.947478372Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:02:25.947520875Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:02:25.947534537Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:02:25.947547212Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:02:25.947556811Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:02:30.966266267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:02:30.995338478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:02:30.995446505Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:02:31.022843031Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:02:31.022890912Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:02:31.022905292Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:02:31.022915807Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:02:31.022926758Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:02:36.047623407Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:02:36.08154493Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:02:36.081656982Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:02:36.104585257Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:02:36.104629062Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:02:36.104645002Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:02:36.104657135Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:02:36.104666052Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:02:41.124798747Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:02:41.154252562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:02:41.154365556Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:02:41.176181654Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:02:41.176223396Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:02:41.176250572Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:02:41.176262473Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:02:41.17627261Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:02:46.195335726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:02:46.224277967Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:02:46.224365783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:02:46.244848817Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:02:46.24489067Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:02:46.244905604Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:02:51.265555899Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:02:51.295747791Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:02:51.295887285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:02:51.317284612Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:02:51.317327063Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:02:51.317341357Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:02:51.317379992Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:02:51.317389506Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:02:56.329522254Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:02:56.358549194Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:02:56.35867544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:02:56.384494843Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:02:56.384537802Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:02:56.384551597Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:02:56.384562991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:02:56.384571444Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:03:01.399464297Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:03:01.42641135Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:03:01.426564411Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:03:01.453263085Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:03:01.453321827Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:03:01.453401537Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:03:01.4534335Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:03:01.45344416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:03:06.470133143Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:03:06.499635236Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:03:06.499746967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:03:06.520166067Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:03:06.520208151Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:03:06.52025553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:03:06.520288988Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:03:06.520297361Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:03:11.538187701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:03:11.567055858Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:03:11.56716858Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:03:11.590868792Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:03:11.591249682Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:03:11.591270276Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:03:11.591285071Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:03:11.591296417Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:03:16.604826819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:03:16.634792104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:03:16.634911074Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:03:16.656252552Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:03:16.656295184Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:03:16.656333225Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:03:16.656344853Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:03:16.656352943Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:03:21.679435468Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:03:21.709671769Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:03:21.709852472Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:03:21.731458082Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:03:21.731503266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:03:21.731518062Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:03:21.731529704Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:03:21.731539016Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:03:26.746290897Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:03:26.773726382Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:03:26.773812865Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:03:26.798223618Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:03:26.798278853Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:03:26.798291921Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:03:26.798302317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:03:26.798310636Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:03:31.817503461Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:03:31.845978853Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:03:31.846089857Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:03:31.869072324Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:03:31.869109793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:03:31.869122717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:03:31.869133686Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:03:31.86914159Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:03:36.885802935Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:03:36.915187681Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:03:36.915297985Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:03:36.940778743Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:03:36.940821884Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:03:36.940847687Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:03:36.940859744Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:03:36.94086817Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:03:41.962811277Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:03:41.991419728Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:03:41.991513801Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:03:42.015680564Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:03:42.015724118Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:03:42.015739145Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:03:42.015751949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:03:42.015761878Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:03:47.03129098Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:03:47.059454111Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:03:47.059594121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:03:47.080571927Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:03:47.080625538Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:03:47.080640348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:03:47.080650892Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:03:47.080659548Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:03:52.100932874Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:03:52.131257034Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:03:52.131356245Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:03:52.152557033Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:03:52.15261892Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:03:52.152634029Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:03:52.15264518Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:03:52.152653356Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:03:57.168189162Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:03:57.198186542Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:03:57.198295756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:03:57.219118549Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:03:57.219161932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:03:57.219175331Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:03:57.219187333Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:03:57.219196339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:04:02.241202962Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:04:02.269368983Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:04:02.269482242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:04:02.290968852Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:04:02.291015206Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:04:02.291028798Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:04:07.309412626Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:04:07.336021211Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:04:07.336121375Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:04:07.359469566Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:04:07.359512665Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:04:07.359526106Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:04:07.359536648Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:04:07.359546313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:04:12.381066431Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:04:12.409004275Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:04:12.409111892Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:04:12.429417674Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:04:12.429475826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:04:12.429491273Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:04:12.429502432Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:04:12.429640158Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T19:04:12.429936088Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T19:04:12.429511142Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:04:17.446412921Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:04:17.475819563Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:04:17.475914301Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:04:17.501773806Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:04:17.501853895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:04:17.501868832Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:04:17.501878253Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:04:17.501886904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:04:22.520646849Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:04:22.551622325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:04:22.551747117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:04:22.571367105Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:04:22.571407829Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:04:22.571421437Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:04:22.571433218Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:04:22.571442881Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:04:27.586702708Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:04:27.615123913Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:04:27.615216575Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:04:27.638719963Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:04:27.639103166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:04:27.639124838Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:04:27.639136773Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:04:27.639147862Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:04:32.6560529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:04:32.686031565Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:04:32.686121905Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:04:32.708162912Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:04:32.708207832Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:04:32.70822202Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:04:32.708231778Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:04:32.708254787Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:04:37.724493872Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:04:37.752218062Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:04:37.75233291Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:04:37.774494696Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:04:37.774576524Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:04:37.774601073Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:04:37.774611637Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:04:37.774735703Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T19:04:37.774958845Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:04:42.789419295Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:04:42.818974846Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:04:42.819090492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:04:42.844811917Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:04:42.844853215Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:04:42.844867815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:04:42.844878072Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:04:42.844886474Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:04:47.86084211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:04:47.890599847Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:04:47.890711125Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:04:47.915258033Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:04:47.915305221Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:04:47.91531981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:04:47.915330145Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:04:47.915340008Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:04:52.936289557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:04:52.964101289Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:04:52.964222311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:04:52.989264573Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:04:52.989323181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:04:52.989339266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:05:05.454196692Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:05:05.528549893Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:05:05.528673245Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:05:05.625084427Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:05:05.625297468Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:05:05.625317586Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:05:05.625328185Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:05:05.625337612Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:05:10.644377134Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:05:10.674773897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:05:10.674868388Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:05:10.699706503Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:05:10.699749669Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:05:10.699764786Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:05:10.699775606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:05:10.699784366Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:05:15.714873275Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:05:15.745365691Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:05:15.745459649Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:05:15.770134129Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:05:15.770181167Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:05:15.770195983Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:05:15.770203748Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:05:15.770211018Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:05:20.787125735Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:05:20.817643755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:05:20.817751775Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:05:20.84287155Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:05:20.842913659Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:05:20.842927531Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:05:20.8429387Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:05:20.842948187Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:05:25.859720123Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:05:25.890410274Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:05:25.890520851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:05:25.929573782Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:05:25.93128554Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:05:25.931315746Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:05:25.931329336Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:05:25.93133979Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:05:30.955588224Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:05:30.984894764Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:05:30.984990379Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:05:31.014129936Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:05:31.014177057Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:05:31.014192408Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:05:31.014204192Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:05:31.014213948Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:05:36.029292091Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:05:36.059555319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:05:36.059649482Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:05:36.081078751Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:05:36.081122193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:05:36.081135163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:05:36.081146963Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:05:36.08115671Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:05:41.099290348Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:05:41.129154941Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:05:41.129297755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:05:41.149642008Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:05:41.149696391Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:05:41.149710889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:05:41.149721401Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:05:41.149730308Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:05:46.16727935Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:05:46.195080282Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:05:46.19517822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:05:46.219110765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:05:46.21915391Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:05:46.219166882Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:05:46.219205449Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:05:46.219214033Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:05:51.23634295Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:05:51.266947656Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:05:51.267061272Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:05:51.290806149Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:05:51.290858698Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:05:51.290873136Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:05:51.290883234Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:05:51.290891559Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:05:56.305288466Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:05:56.335956334Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:05:56.336076721Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:05:56.360991007Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:05:56.361050312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:05:56.361065238Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:05:56.361076003Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:05:56.361085121Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:06:01.393617902Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:06:01.45910712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:06:01.460078416Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:06:01.513646445Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:06:01.513734782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:06:01.513751473Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:06:01.513763816Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:06:01.513772299Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:06:06.529911538Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:06:06.558680937Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:06:06.55879919Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:06:06.582398923Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:06:06.582442579Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:06:06.582467946Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:06:06.582479179Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:06:06.582487684Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:06:11.602985788Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:06:11.633034965Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:06:11.633124061Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:06:11.656622275Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:06:11.656667389Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:06:11.656681029Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:06:11.656692648Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:06:11.656701852Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:06:16.674483814Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:06:16.703920791Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:06:16.70400172Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:06:16.727502912Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:06:16.727544991Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:06:16.72755845Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:06:16.727571512Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:06:21.748970996Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:06:21.778706912Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:06:21.778792063Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:06:21.800959672Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:06:21.801003237Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:06:21.801017538Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:06:21.801028534Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:06:21.801036391Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:06:26.822271475Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:06:26.855733477Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:06:26.855845896Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:06:26.876948787Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:06:26.877009149Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:06:26.877024288Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:06:26.877034168Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:06:26.877042673Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:06:31.893215127Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:06:31.922836382Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:06:31.92293059Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:06:31.948915765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:06:31.94896819Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:06:31.948984378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:06:31.948994992Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:06:31.949003497Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:06:36.967288129Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:06:36.99718311Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:06:36.997301226Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:06:37.023594898Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:06:37.023644703Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:06:37.023661111Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:06:37.023673538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:06:37.023683491Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:06:42.042979551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:06:42.07528569Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:06:42.075397294Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:06:42.096930032Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:06:42.096974162Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:06:42.096989042Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:06:42.097000874Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:06:42.097009624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:06:47.113278669Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:06:47.143793454Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:06:47.143905113Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:06:47.167514189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:06:47.167559195Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:06:47.167573003Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:06:47.167583361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:06:47.16759295Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:06:52.188284901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:06:52.218311014Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:06:52.218403484Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:06:52.241087577Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:06:52.241132664Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:06:52.241146646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:06:52.241158742Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:06:52.241168239Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:06:57.258949728Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:06:57.286836054Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:06:57.28692706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:06:57.310790718Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:06:57.310857671Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:06:57.310872401Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:07:02.331541576Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:07:02.363679774Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:07:02.363798718Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:07:02.392200039Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:07:02.392262462Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:07:02.392278969Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:07:02.392289839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:07:02.392298404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:07:07.408613278Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:07:07.441206221Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:07:07.441340771Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:07:07.462494699Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:07:07.462547606Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:07:07.462562992Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:07:07.462574699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:07:07.462582814Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:07:12.482172343Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:07:12.51313415Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:07:12.513283718Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:07:12.537216763Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:07:12.537277327Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:07:12.53729311Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:07:12.537302144Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:07:12.537308997Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:07:17.554292129Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:07:17.582775359Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:07:17.582886487Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:07:17.602931446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:07:17.602981293Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:07:17.602997908Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:07:17.603008041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:07:17.603016601Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:07:22.62244693Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:07:22.651804436Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:07:22.651897977Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:07:22.679095388Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:07:22.679139649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:07:22.679153523Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:07:22.679166237Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:07:22.679176163Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:07:27.697071115Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:07:27.725754657Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:07:27.725875091Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:07:27.751576927Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:07:27.751644673Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:07:27.751713091Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:07:27.751726659Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:07:27.751735382Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:07:32.769701056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:07:32.798328995Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:07:32.798442969Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:07:32.822780186Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:07:32.822839696Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:07:32.822854101Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:07:32.822864757Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:07:32.822872953Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:07:37.840845848Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:07:37.871743254Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:07:37.871871342Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:07:37.893631992Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:07:37.893672121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:07:37.893685228Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:07:37.89369771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:07:37.893707959Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:07:42.907221528Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:07:42.937850114Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:07:42.937940426Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:07:42.958014256Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:07:42.958056002Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:07:42.958094497Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:07:42.958104285Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:07:42.958112759Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:07:47.97591069Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:07:48.006293332Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:07:48.00639176Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:07:48.029267769Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:07:48.029307121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:07:48.0293213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:07:48.029375198Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:07:48.029385007Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:07:53.046274797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:07:53.076252622Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:07:53.076360845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:07:53.099994002Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:07:53.100559569Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:07:53.100758977Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:07:53.100776291Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:07:53.100788235Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:07:58.115190927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:07:58.146154371Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:07:58.146259099Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:07:58.171519902Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:07:58.171560967Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:07:58.17159987Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:07:58.171610569Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:07:58.171618815Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:08:03.191230043Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:08:03.222848215Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:08:03.222977503Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:08:03.246207676Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:08:03.24626127Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:08:03.246277065Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:08:03.246288186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:08:03.246297763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:08:08.262304364Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:08:08.290706163Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:08:08.290817687Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:08:08.311133872Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:08:08.311179389Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:08:08.311195112Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:08:08.311206427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:08:08.31121767Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:08:13.330272754Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:08:13.360641433Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:08:13.360758632Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:08:13.381049826Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:08:13.38109477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:08:13.381109386Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:08:13.381121094Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:08:13.381130902Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:08:18.399537596Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:08:18.430151916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:08:18.430292322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:08:18.453917369Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:08:18.453973419Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:08:18.453987687Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:08:18.453997217Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:08:18.454005309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:08:23.470105073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:08:23.500340159Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:08:23.50059103Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:08:23.523192461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:08:23.523247707Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:08:23.523261472Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:08:23.523272029Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:08:23.523279978Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:08:28.543571826Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:08:28.571516578Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:08:28.571626622Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:08:28.591484592Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:08:28.591527336Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:08:28.591541589Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:08:28.591552669Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:08:28.591563073Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:08:33.609650633Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:08:33.638420579Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:08:33.638539395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:08:33.662992388Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:08:33.663032586Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:08:33.663045715Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:08:33.663057981Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:08:33.663066789Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:08:38.681536369Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:08:38.711353262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:08:38.711439269Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:08:38.734407546Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:08:38.734451421Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:08:38.734465477Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:08:38.734478238Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:08:38.73448724Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:08:43.753662042Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:08:43.781329695Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:08:43.781462412Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:08:43.803026017Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:08:43.803067093Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:08:43.803080483Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:08:43.803091468Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:08:43.80310062Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:08:48.820190034Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:08:48.850355392Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:08:48.850444494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:08:48.873438815Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:08:48.873497795Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:08:48.873512638Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:08:48.873523427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:08:48.873531468Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:08:53.897271163Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:08:53.926921239Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:08:53.927010764Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:08:53.955732248Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:08:53.955771674Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:08:53.955784295Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:08:53.955795624Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:08:53.955805Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:08:58.973392321Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:08:59.001897424Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:08:59.002032569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:08:59.025526464Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:08:59.025568206Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:08:59.025581966Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:08:59.025593197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:08:59.025621666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:09:04.046639175Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:09:04.077096338Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:09:04.077177329Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:09:04.099282651Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:09:04.099326243Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:09:04.099339953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:09:04.09935084Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:09:04.099359521Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:09:09.11629299Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:09:09.145079826Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:09:09.145173176Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:09:09.169378034Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:09:09.169420923Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:09:09.169434599Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:09:09.169447901Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:09:09.169457099Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:09:14.18408671Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:09:14.215852387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:09:14.215939509Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:09:14.237859826Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:09:14.23790653Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:09:14.237921041Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:09:14.237952124Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:09:14.23796315Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:09:19.25804984Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:09:19.287615605Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:09:19.287731169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:09:19.310363649Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:09:19.310408191Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:09:19.310453008Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:09:19.310463481Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:09:19.310471673Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:09:24.329676536Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:09:24.35690685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:09:24.35699752Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:09:24.382127497Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:09:24.382174002Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:09:24.382189093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:09:24.382199166Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:09:24.382208134Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:09:29.401282199Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:09:29.432381832Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:09:29.432572429Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:09:29.456300691Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:09:29.456345785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:09:29.45636072Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:09:29.456372905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:09:29.456382483Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:09:34.476123428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:09:34.507107628Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:09:34.507205902Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:09:34.530299005Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:09:34.530343525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:09:34.530356996Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:09:34.530368515Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:09:34.530377533Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:09:39.550285857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:09:39.577245077Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:09:39.577331383Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:09:39.600419128Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:09:39.600536895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:09:39.600551578Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:09:39.600562741Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:09:39.600571347Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:09:44.616110567Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:09:44.647259117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:09:44.647341608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:09:44.670659328Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:09:44.670699156Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:09:44.670711969Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:09:44.670722944Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:09:44.670732685Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:09:49.687567249Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:09:49.71903543Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:09:49.719151885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:09:49.73966424Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:09:49.739709294Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:09:49.739725044Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:09:49.739736377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:09:49.739745105Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:09:54.759350114Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:09:54.790141689Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:09:54.790275448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:09:54.817578341Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:09:54.81762984Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:09:54.817644573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:09:54.817700708Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:09:54.817711551Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:09:59.836786701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:09:59.864198955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:09:59.864319766Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:09:59.887719578Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:09:59.887765101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:09:59.88778027Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:09:59.887792892Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:09:59.887802152Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:10:04.905307095Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:10:04.935709375Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:10:04.93580513Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:10:04.959811189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:10:04.959863205Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:10:04.959878641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:10:04.959889343Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:10:04.959898808Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:10:09.97786158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:10:10.005655764Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:10:10.005787339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:10:10.027761904Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:10:10.027804087Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:10:10.027818959Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:10:10.027831092Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:10:10.027841442Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:10:15.047822464Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:10:15.077351082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:10:15.077455241Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:10:15.100994453Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:10:15.101293974Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:10:15.101315082Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:10:15.101327092Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:10:15.101337331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:10:20.120393187Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:10:20.15173927Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:10:20.151831439Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:10:20.174322077Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:10:20.174365006Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:10:20.174378149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:10:20.174388476Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:10:20.174396751Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:10:25.19263478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:10:25.222691016Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:10:25.222811329Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:10:25.243476949Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:10:25.243520406Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:10:25.243533653Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:10:30.259259997Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:10:30.289827537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:10:30.289933214Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:10:30.310117515Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:10:30.310183875Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:10:30.31019878Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:10:30.310208807Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:10:30.310216995Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:10:35.324763353Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:10:35.355649616Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:10:35.355765318Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:10:35.378665922Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:10:35.378708038Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:10:35.378721693Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:10:35.378745432Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:10:35.378754476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:10:40.395380248Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:10:40.423913004Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:10:40.424030545Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:10:40.448006126Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:10:40.448049111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:10:40.448063213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:10:40.448072441Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:10:40.448082469Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:10:45.465404702Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:10:45.491499546Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:10:45.491591376Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:10:45.516805512Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:10:45.516851869Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:10:45.516865298Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:10:45.516884892Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:10:45.516891989Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:10:50.532866707Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:10:50.562303224Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:10:50.562420211Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:10:50.584282107Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:10:50.584336485Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:10:50.584351287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:10:50.584361517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:10:50.584369212Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:10:55.60239091Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:10:55.629319295Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:10:55.629432489Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:10:55.65184526Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:10:55.651890913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:10:55.651958403Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:10:55.651972948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:10:55.65198157Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:11:00.672615093Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:11:00.702705243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:11:00.702815447Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:11:00.72333478Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:11:00.723378145Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:11:00.723392052Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:11:00.723417245Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:11:00.723425844Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:11:05.736128074Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:11:05.763857211Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:11:05.763949478Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:11:05.788137897Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:11:05.788183918Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:11:05.788199827Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:11:05.788209616Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:11:05.788216596Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:11:10.804232533Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:11:10.834050746Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:11:10.834143104Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:11:10.854906753Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:11:10.854959533Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:11:10.854977043Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:11:10.854987175Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:11:10.854995543Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:11:15.870388729Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:11:15.901616483Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:11:15.901734189Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:11:15.925414012Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:11:15.92546599Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:11:15.925480348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:11:15.925597389Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:11:15.925611462Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:11:20.941481586Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:11:20.970779766Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:11:20.970903156Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:11:20.992692487Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:11:20.992747579Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:11:20.992762355Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:11:20.992773687Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:11:20.992782416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:11:26.007287368Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:11:26.038471735Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:11:26.038566372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:11:26.062591728Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:11:26.062636277Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:11:26.062649985Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:11:26.062660942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:11:26.062669019Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:11:31.082822272Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:11:31.113421194Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:11:31.113533391Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:11:31.137345859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:11:31.137392049Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:11:31.137406074Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:11:31.137416732Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:11:31.137426783Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:11:36.154318622Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:11:36.183160794Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:11:36.18328053Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:11:36.20368371Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:11:36.203727231Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:11:36.203742474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:11:36.203753799Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:11:36.203762836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:11:41.221681206Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:11:41.25190312Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:11:41.252025109Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:11:41.272685553Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:11:41.27274162Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:11:41.272756866Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:11:41.272882774Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:11:41.272907524Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:11:46.289944361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:11:46.316943903Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:11:46.317372563Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:11:46.342381554Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:11:46.342421314Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:11:46.342434631Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:11:46.342445251Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:11:46.34245344Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:11:51.364351562Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:11:51.393896688Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:11:51.394018664Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:11:51.420637173Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:11:51.420683916Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:11:51.420698906Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:11:51.420709947Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:11:51.420719222Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:11:56.435325978Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:11:56.465292749Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:11:56.465391569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:11:56.487901702Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:11:56.487945825Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:11:56.487959003Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:11:56.487969883Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:11:56.487980263Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:12:01.522112451Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:12:01.606869544Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:12:01.6070187Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:12:01.678327265Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:12:01.678382526Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:12:01.678399023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:12:01.678410628Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:12:01.678420496Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:12:06.708054262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:12:06.736047634Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:12:06.736146925Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:12:06.760521505Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:12:06.760564107Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:12:06.760602857Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:12:06.760615032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:12:06.760625385Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:12:11.780374955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:12:11.811277503Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:12:11.811473512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:12:11.835327906Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:12:11.835400277Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:12:11.835415727Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:12:11.835426186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:12:11.835434268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:12:16.850765631Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:12:16.880632292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:12:16.880740983Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:12:16.902590138Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:12:16.902667291Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:12:16.902682193Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:12:16.902744664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:12:16.902754996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:12:21.919881827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:12:21.951254283Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:12:21.951347846Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:12:21.975084718Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:12:21.975133131Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:12:21.97514781Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:12:21.975157908Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:12:21.975168689Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:12:26.991393344Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:12:27.021857622Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:12:27.021975175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:12:27.047505647Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:12:27.0475576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:12:27.047633805Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:12:27.047647492Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:12:27.047656235Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:12:32.07005815Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:12:32.099956409Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:12:32.100089035Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:12:32.123763937Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:12:32.123809655Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:12:32.123824933Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:12:32.123836297Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:12:32.123845773Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:12:37.14012118Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:12:37.168014162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:12:37.168114164Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:12:37.188151959Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:12:37.188205035Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:12:37.188265517Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:12:37.188565193Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:12:37.188581985Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:12:42.209060571Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:12:42.239587972Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:12:42.239682104Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:12:42.264530912Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:12:42.264577142Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:12:42.264591974Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:12:42.264602667Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:12:42.264610924Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:12:47.283181934Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:12:47.312688106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:12:47.312789633Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:12:47.338543524Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:12:47.338584869Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:12:47.338598545Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:12:47.338610797Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:12:47.338620496Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:12:52.357394241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:12:52.389354029Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:12:52.389456196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:12:52.413907446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:12:52.413947755Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:12:52.413961455Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:12:52.413979973Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:12:52.413989047Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:12:57.433420932Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:12:57.463488975Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:12:57.463593975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:12:57.486986464Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:12:57.487041403Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:12:57.487057126Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:12:57.487067199Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:12:57.48707592Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:13:02.505888238Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:13:02.537381123Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:13:02.537521645Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:13:02.557869664Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:13:02.557930771Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:13:02.557945146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:13:02.557955823Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:13:02.557964059Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:13:07.582606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:13:07.609993327Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:13:07.610086859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:13:07.630552021Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:13:07.630602394Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:13:07.630617448Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:13:07.630628086Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:13:07.630636374Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:13:12.647116531Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:13:12.678414537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:13:12.678521096Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:13:12.701822878Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:13:12.701866462Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:13:12.70188077Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:13:12.701891905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:13:12.701900674Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:13:17.71921358Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:13:17.748664675Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:13:17.748772468Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:13:17.770362994Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:13:17.770410559Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:13:17.770423873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:13:17.770452722Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:13:17.770462698Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:13:22.784873152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:13:22.815179872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:13:22.815285593Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:13:22.835376838Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:13:22.835428403Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:13:22.835443857Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:13:22.835455352Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:13:22.835463211Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:13:27.854840495Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:13:27.885620571Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:13:27.885745058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:13:27.907724346Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:13:27.907766084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:13:27.907779669Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:13:27.907792341Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:13:27.907801154Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:13:32.927276661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:13:32.954742892Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:13:32.954832353Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:13:32.974112687Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:13:32.974154374Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:13:32.974168543Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:13:32.9741808Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:13:32.974190432Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:13:37.992951288Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:13:38.020770349Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:13:38.020866161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:13:38.046186405Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:13:38.046229768Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:13:38.046268601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:13:38.046280361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:13:38.046289049Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:13:43.063190239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:13:43.091821851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:13:43.091928382Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:13:43.116392131Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:13:43.11655297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:13:43.11656905Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:13:43.116580963Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:13:43.116589726Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:13:48.136030563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:13:48.164045041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:13:48.164146652Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:13:48.19141308Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:13:48.191474255Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:13:48.19148973Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:13:48.191500597Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:13:48.191509191Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:13:53.212993693Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:13:53.244023244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:13:53.244142987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:13:53.269900422Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:13:53.269948919Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:13:53.269962793Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:13:58.288164227Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:13:58.318476571Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:13:58.318567006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:13:58.342613234Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:13:58.342661691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:13:58.342676962Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:13:58.342688439Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:13:58.342695557Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:14:03.363286166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:14:03.393911259Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:14:03.394025974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:14:03.414961494Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:14:03.415003434Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:14:03.415016833Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:14:03.415027784Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:14:03.415037984Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:14:08.433226813Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:14:08.461063627Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:14:08.461171467Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:14:08.482413215Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:14:08.482452145Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:14:08.482465178Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:14:08.482476672Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:14:08.482485612Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:14:13.497463627Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:14:13.528707503Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:14:13.528809748Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:14:13.55229747Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:14:13.552338571Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:14:13.552392265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:14:13.552404317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:14:13.552516717Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:14:18.569736591Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:14:18.601222609Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:14:18.601356502Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:14:18.62495063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:14:18.62499211Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:14:18.625006571Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:14:18.625016875Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:14:18.62502504Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:14:23.645144372Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:14:23.677119429Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:14:23.677210864Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:14:23.697403558Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:14:23.697447425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:14:23.697479756Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:14:23.697491649Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:14:23.697499905Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:14:28.711102099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:14:28.739137551Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:14:28.739271677Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:14:28.761129024Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:14:28.761170185Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:14:28.761185094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:14:28.761197389Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:14:28.76120583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:14:33.779494483Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:14:33.810136012Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:14:33.810229999Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:14:33.833356022Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:14:33.833397661Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:14:33.833411818Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:14:33.833423778Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:14:33.833433324Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:14:38.849799268Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:14:38.878962768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:14:38.879080712Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:14:38.902209955Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:14:38.902263713Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:14:43.922403925Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:14:43.953912437Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:14:43.954029107Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:14:43.97354977Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:14:43.973592686Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:14:43.973607667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:14:43.973618215Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:14:43.973627258Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:14:48.99429259Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:14:49.025045477Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:14:49.02513472Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:14:49.048288232Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:14:49.048342036Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:14:49.048357175Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:14:49.048367677Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:14:49.048376058Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:14:54.070108331Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:14:54.097613678Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:14:54.097722572Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:14:54.122137813Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:14:54.122192234Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:14:54.122208625Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:14:54.122219413Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:14:54.122227911Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:14:59.139685228Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:14:59.169788856Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:14:59.169900377Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:14:59.193797853Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:14:59.193841852Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:14:59.193855287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:14:59.193868204Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:14:59.193877174Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:15:04.212740977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:15:04.24673859Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:15:04.246824934Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:15:04.268214752Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:15:04.26828411Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:15:04.26829984Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:15:04.268309638Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:15:04.26831747Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:15:09.287465926Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:15:09.317139356Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:15:09.317271971Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:15:09.34290866Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:15:09.342952444Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:15:09.34296608Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:15:09.342978146Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:15:09.342987269Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:15:14.359879955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:15:14.390410616Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:15:14.390547131Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:15:14.417739701Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:15:14.417799337Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:15:14.417814549Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:15:14.417825071Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:15:14.417833738Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:15:19.436347147Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:15:19.467432159Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:15:19.467531816Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:15:19.491891075Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:15:19.491944689Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:15:19.491959756Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:15:19.491981756Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:15:19.491990132Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:15:24.512443745Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:15:24.542456894Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:15:24.542565554Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:15:24.566223481Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:15:24.56628274Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:15:24.566297733Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:15:24.566308159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:15:24.566315967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:15:29.584371308Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:15:29.617732391Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:15:29.617835452Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:15:29.639735776Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:15:29.639779949Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:15:29.63979399Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:15:29.63980405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:15:29.639812286Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:15:34.662276432Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:15:34.689607242Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:15:34.689719823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:15:34.711386277Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:15:34.711426867Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:15:34.711441301Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:15:34.711474825Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:15:34.711484214Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:15:39.728752765Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:15:39.757253371Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:15:39.757342443Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:15:39.783376666Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:15:39.783419272Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:15:39.783433375Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:15:39.783444113Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:15:39.783452424Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:15:44.803394311Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:15:44.83219551Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:15:44.832330881Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:15:44.85241762Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:15:44.852593605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:15:44.85260833Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:15:44.852619616Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:15:44.852629142Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:15:49.870006667Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:15:49.899043369Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:15:49.899153408Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:15:49.923044051Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:15:49.923090768Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:15:49.923105813Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:15:49.923119892Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:15:49.923127187Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:15:54.944032553Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:15:54.972911364Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:15:54.973029755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:15:54.994585349Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:15:54.994647848Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:15:54.994662425Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:15:54.99467159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:15:54.99467961Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:16:00.066540289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:16:00.164133617Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:16:00.164270545Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:16:00.237093999Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:16:00.23714485Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:16:00.237161184Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:16:00.237173033Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:16:00.237181977Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:16:05.252620793Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:16:05.282753137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:16:05.282844113Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:16:05.305026818Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:16:05.305069228Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:16:05.305082995Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:16:05.305117842Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:16:05.305127505Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:16:10.322216282Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:16:10.353424899Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:16:10.353519523Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:16:10.376108521Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:16:10.37625801Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:16:10.376279507Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:16:10.376305145Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:16:10.376314246Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:16:15.397769304Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:16:15.427476624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:16:15.427581554Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:16:15.451882511Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:16:15.451926763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:16:15.451941509Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:16:15.451952857Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:16:15.451962029Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:16:20.472619819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:16:20.50113676Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:16:20.501275973Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:16:20.525511912Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:16:20.525556579Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:16:20.525570316Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:16:20.525583172Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:16:20.525592687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:16:25.548295567Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:16:25.580640609Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:16:25.580739437Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:16:25.604322005Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:16:25.604380132Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:16:25.604393918Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:16:25.604404218Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:16:25.604413744Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:16:30.624505935Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:16:30.652725425Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:16:30.652846614Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:16:30.676813485Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:16:30.676858342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:16:30.676871702Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:16:30.676882931Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:16:30.676892896Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:16:35.693296751Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:16:35.723602866Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:16:35.723693182Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:16:35.745041214Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:16:35.745085418Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:16:35.745098568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:16:35.74511188Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:16:35.745121086Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:16:40.763291795Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:16:40.791387983Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:16:40.791503531Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:16:40.81494433Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:16:40.814999546Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:16:45.827330006Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:16:45.858963166Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:16:45.859141208Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:16:45.882418585Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:16:45.882482447Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:16:45.882498594Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:16:45.88250835Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:16:45.882516386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:16:50.902603986Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:16:50.933370255Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:16:50.933480885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:16:50.957518291Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:16:50.957559886Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:16:50.957573092Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:16:50.957584578Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:16:50.957592603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:16:55.97292405Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:16:56.003098155Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:16:56.003223735Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:16:56.026413212Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:16:56.026456538Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:16:56.026496065Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:16:56.02650728Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:16:56.026515534Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:17:01.047279783Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:17:01.078532903Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:17:01.078626406Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:17:01.102949063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:17:01.103015415Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:17:01.103028837Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:17:01.103039003Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:17:01.103049585Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:17:06.122586544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:17:06.153579952Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:17:06.15367208Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:17:06.178489072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:17:06.178534684Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:17:06.178549637Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:17:06.178575608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:17:06.178583954Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:17:11.199301042Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:17:11.227469613Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:17:11.227595224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:17:11.250045417Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:17:11.250085605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:17:11.250098958Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:17:11.250109178Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:17:11.250118904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:17:16.267587754Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:17:16.298399841Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:17:16.298487148Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:17:16.321913802Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:17:16.321954484Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:17:16.321967801Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:17:16.321977885Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:17:16.321988617Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:17:21.343042276Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:17:21.372287746Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:17:21.372377789Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:17:21.394402205Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:17:21.394465818Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:17:21.394481903Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:17:21.39449125Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:17:21.394499882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:17:26.41430469Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:17:26.445116123Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:17:26.445232065Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:17:26.469299552Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:17:26.469346614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:17:26.469361235Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:17:26.469372504Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:17:26.469381549Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:17:31.488299655Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:17:31.520541472Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:17:31.520675628Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:17:31.540820794Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:17:31.540863297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:17:31.540876111Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:17:31.54088807Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:17:31.540897491Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:17:36.556301734Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:17:36.585171195Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:17:36.58527866Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:17:36.604379986Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:17:36.604421425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:17:36.604434797Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:17:36.604528817Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:17:36.604539719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:17:41.622999977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:17:41.650100582Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:17:41.650226128Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:17:41.672047747Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:17:41.672094979Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:17:41.672108512Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:17:41.672118536Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:17:41.672127444Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:17:46.6892789Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:17:46.71742441Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:17:46.717516997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:17:46.738455456Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:17:46.738500786Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:17:46.73851613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:17:46.738527467Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:17:46.738536415Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:17:51.75914908Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:17:51.788654551Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:17:51.788747584Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:17:51.812641866Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:17:51.812682318Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:17:51.812697013Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:17:51.812718573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:17:51.812727744Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:17:56.826736059Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:17:56.854693366Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:17:56.854812887Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:17:56.88088474Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:17:56.880927076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:17:56.88094061Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:17:56.88095282Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:17:56.880971855Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:18:01.902192686Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:18:01.936623379Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:18:01.936724585Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:18:01.975827565Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:18:01.975920659Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:18:01.975946785Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:18:01.9759589Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:18:01.975967122Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:18:06.994654168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:18:07.021671325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:18:07.021778339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:18:07.042940094Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:18:07.042982631Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:18:07.042997237Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:18:07.0430098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:18:07.043019421Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:18:12.063462263Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:18:12.093624907Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:18:12.093757469Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:18:12.118507292Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:18:12.118550371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:18:12.118600779Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:18:12.118611844Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:18:12.118620022Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:18:17.136273569Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:18:17.166691133Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:18:17.166795991Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:18:17.190390032Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:18:17.190431113Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:18:17.190444697Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:18:17.190456566Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:18:17.190465898Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:18:22.208176401Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:18:22.238483397Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:18:22.238602085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:18:22.262031801Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:18:22.262074247Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:18:22.262087435Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:18:22.262099405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:18:22.262109132Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:18:27.279156528Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:18:27.308958115Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:18:27.309075477Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:18:27.335788683Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:18:27.335854688Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:18:27.3358697Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:18:27.335879199Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:18:27.335887446Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:18:32.356310119Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:18:32.388292037Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:18:32.388401581Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:18:32.41420146Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:18:32.414263058Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:18:32.414278583Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:18:32.414290435Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:18:32.414299487Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:18:37.432314197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:18:37.462077546Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:18:37.462172404Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:18:37.484270487Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:18:37.484329317Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:18:37.484343408Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:18:37.484354032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:18:37.48436205Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:18:42.502003379Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:18:42.53259025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:18:42.532683267Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:18:42.558895873Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:18:42.558938254Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:18:42.558951297Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:18:42.558962457Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:18:42.558972437Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:18:47.575165848Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:18:47.603609643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:18:47.603719907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:18:47.623925041Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:18:47.623966095Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:18:47.623980463Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:18:47.623990974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:18:47.624001164Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:18:52.64620167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:18:52.676323884Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:18:52.676588901Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:18:52.706182588Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:18:52.706291899Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:18:52.706310496Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:18:52.70634112Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:18:52.706350513Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:18:57.725550865Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:18:57.756270501Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:18:57.756360251Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:18:57.780773238Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:18:57.780831286Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:18:57.780845693Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:18:57.780855236Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:18:57.780863448Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:19:02.797276818Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:19:02.826035861Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:19:02.826162343Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:19:02.846969145Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:19:02.84701605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:19:02.847030319Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:19:02.847041179Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:19:02.84705101Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:19:07.862446687Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:19:07.890621643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:19:07.890750063Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:19:07.911552058Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:19:07.911597476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:19:07.911621885Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:19:07.911633483Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:19:07.911641911Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:19:18.07273566Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:19:18.143836454Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:19:18.143926458Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:19:18.223493574Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:19:18.223588914Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:19:18.224060328Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:19:18.224133064Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T19:19:18.224475722Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:19:18.224494162Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:19:23.246026514Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:19:23.27740618Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:19:23.277497871Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:19:23.302126053Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:19:23.302169846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:19:23.302183656Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:19:28.317328479Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:19:28.347053156Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:19:28.347144118Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:19:28.368838218Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:19:28.36888865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:19:28.368903119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:19:28.368914054Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:19:28.368922169Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:19:33.386287913Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:19:33.415406552Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:19:33.415524442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:19:33.43711556Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:19:33.437159338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:19:33.437173982Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:19:33.437186789Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:19:33.437196105Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:19:38.453348983Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:19:38.482616819Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:19:38.482740845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:19:38.50569565Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:19:38.505747562Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:19:38.505762025Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:19:38.505772947Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:19:38.50578126Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:19:43.527020381Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:19:43.5555572Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:19:43.55568974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:19:43.576392052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:19:43.576519755Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:19:43.576536603Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:19:43.57654941Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:19:43.576560001Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:19:48.593304871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:19:48.622314435Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:19:48.622421571Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:19:48.645581335Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:19:48.645624375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:19:48.645681514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:19:48.64570714Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:19:48.645716581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:19:53.662272018Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:19:53.6909459Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:19:53.691058721Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:19:53.712205026Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:19:53.712283256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:19:53.712308142Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:19:53.712319575Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:19:53.712328495Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:19:58.730514301Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:19:58.757930017Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:19:58.758038425Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:19:58.779878546Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:19:58.779918877Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:19:58.779932399Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:19:58.779958565Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:19:58.779966882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:20:03.803273542Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:20:03.832896159Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:20:03.832997663Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:20:03.861872461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:20:03.861923467Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:20:03.861938624Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:20:03.861949122Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:20:03.861959007Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:20:08.879760782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:20:08.909879207Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:20:08.909997953Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:20:08.930718835Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:20:08.930774511Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:20:08.930791814Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:20:08.930812489Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:20:08.930924468Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:20:13.951946154Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:20:13.981777828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:20:13.981883788Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:20:14.009368592Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:20:14.009415902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:20:14.009430796Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:20:14.009443094Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:20:14.009453782Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:20:19.027285681Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:20:19.058979947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:20:19.059094299Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:20:19.079873883Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:20:19.07992085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:20:19.079935864Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:20:19.079945879Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:20:19.079956363Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:20:24.09703734Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:20:24.127773551Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:20:24.127879989Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:20:24.155042557Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:20:24.155085745Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:20:24.155101Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:20:24.155113093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:20:24.155122506Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:20:29.169226112Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:20:29.200088812Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:20:29.200219693Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:20:29.220856384Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:20:29.220908794Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:20:29.22092237Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:20:29.220933467Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:20:29.22094207Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:20:34.239031297Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:20:34.269379887Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:20:34.269470231Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:20:34.28965127Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:20:34.289722627Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:20:34.28973699Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:20:34.289747324Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:20:34.289755326Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:20:39.306551598Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:20:39.337523246Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:20:39.337613394Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:20:39.362397745Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:20:39.362442009Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:20:39.362456726Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:20:39.362467269Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:20:39.362477015Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:20:44.382864637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:20:44.413869614Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:20:44.413980868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:20:44.435377022Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:20:44.435419455Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:20:44.435433686Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:20:44.435454526Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:20:44.435463084Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:20:49.449133321Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:20:49.477645133Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:20:49.47774516Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:20:49.498444173Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:20:49.498486814Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:20:49.498499774Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:20:49.498511149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:20:54.518686919Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:20:54.546715817Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:20:54.546818395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:20:54.571477694Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:20:54.571522805Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:20:54.571536504Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:20:54.571547478Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:20:54.571556647Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:20:59.589196427Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:20:59.617505965Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:20:59.617623685Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:20:59.639172591Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:20:59.639215954Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:20:59.639229751Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:20:59.639253377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:20:59.639262492Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:21:04.658615055Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:21:04.688372026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:21:04.688626141Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:21:04.709889606Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:21:04.709934528Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:21:04.70997361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:21:04.709983535Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:21:04.709992558Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:21:09.728295808Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:21:09.757014437Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:21:09.75712784Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:21:09.777656602Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:21:09.777712848Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:21:09.777727295Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:21:09.777737597Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:21:09.77774626Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:21:14.796535537Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:21:14.826210444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:21:14.826337153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:21:14.846744855Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:21:14.846786366Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:21:14.846816961Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:21:14.846826675Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:21:14.846834667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:21:19.86527227Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:21:19.894200888Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:21:19.894350028Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:21:19.918648146Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:21:19.918715385Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:21:19.918730632Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:21:19.918740536Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:21:19.918748953Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:21:24.93729058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:21:24.964404728Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:21:24.964611933Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:21:24.988576985Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:21:24.98862123Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:21:24.988635195Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:21:24.988646296Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:21:24.988654625Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:21:30.005649758Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:21:30.035201292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:21:30.035340917Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:21:30.057917233Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:21:30.057975007Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:21:30.057989782Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:21:30.058000356Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:21:30.058009186Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:21:35.07708638Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:21:35.106370243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:21:35.106465973Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:21:35.127456446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:21:35.127503986Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:21:35.127519083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:21:40.144231208Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:21:40.175332214Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:21:40.175417671Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:21:40.201335244Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:21:40.201380364Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:21:40.201393778Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:21:40.201406024Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:21:40.201416435Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:21:45.216088944Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:21:45.246552441Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:21:45.246646411Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:21:45.267533071Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:21:45.267576472Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:21:45.267590507Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:21:45.267600239Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:21:45.267610076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:21:50.285170853Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:21:50.315351279Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:21:50.315440644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:21:50.335923943Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:21:50.335966646Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:21:50.335983323Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:21:50.335993456Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:21:50.336002127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:21:55.35073602Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:21:55.381605709Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:21:55.381721064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:21:55.404368759Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:21:55.404491643Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:21:55.404508343Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:21:55.404520582Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:21:55.404531212Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:22:00.42370134Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:22:00.454122501Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:22:00.454266388Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:22:00.473398404Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:22:00.473465908Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:22:00.473482424Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:22:00.473492885Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:22:00.473501959Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:22:05.488039443Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:22:05.516944112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:22:05.517080105Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:22:05.545139701Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:22:05.545182565Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:22:05.545197312Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:22:05.545208399Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:22:05.545216687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:22:10.561546721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:22:10.590861083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:22:10.590971473Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:22:10.615471201Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:22:10.615512886Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:22:10.615525981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:22:10.615537461Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:22:10.615546492Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:22:15.635507308Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:22:15.663290148Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:22:15.663406914Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:22:15.685396014Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:22:15.685439265Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:22:15.685453197Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:22:15.68546452Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:22:15.685473994Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:22:20.70269875Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:22:20.731742932Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:22:20.731837383Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:22:20.754197014Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:22:20.754255024Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:22:20.75428539Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:22:20.754295578Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:22:20.754304471Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:22:25.77191298Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:22:25.803127126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:22:25.803219342Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:22:25.829373361Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:22:25.829414968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:22:25.829474967Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:22:25.829488117Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:22:25.829496724Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:22:30.847315428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:22:30.874197028Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:22:30.874302296Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:22:30.901774775Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:22:30.901816175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:22:30.901829697Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:22:30.901840471Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:22:30.901849499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:22:35.918469074Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:22:35.947652462Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:22:35.947761911Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:22:35.97013944Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:22:35.970183004Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:22:35.970196502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:22:35.970207298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:22:35.970215654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:22:40.988202143Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:22:41.017101589Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:22:41.017211207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:22:41.038099291Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:22:41.038143523Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:22:41.038157242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:22:41.038169437Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:22:41.038178361Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:22:46.059265213Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:22:46.086746441Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:22:46.086864744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:22:46.106904376Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:22:46.106956302Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:22:46.106969494Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:22:46.106979224Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:22:46.106988153Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:22:51.123267397Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:22:51.151029016Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:22:51.151142473Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:22:51.172344349Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:22:51.172392874Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:22:51.172408014Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:22:51.172496334Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:22:51.172507603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:22:56.187085964Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:22:56.218571148Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:22:56.21869937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:22:56.238957932Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:22:56.238998655Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:22:56.239013959Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:22:56.239024101Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:22:56.239033869Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:23:01.25729828Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:23:01.287966469Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:23:01.288078539Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:23:01.30802169Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:23:01.30807043Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:23:01.308085104Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:23:01.30809526Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:23:01.308102993Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:23:06.32552511Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:23:06.35578005Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:23:06.35589035Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:23:06.383366695Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:23:06.383410014Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:23:06.383424726Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:23:06.383444521Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:23:06.383453334Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:23:11.402038189Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:23:11.431626411Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:23:11.431742937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:23:11.453765537Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:23:11.453808519Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:23:11.453822487Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:23:11.45383538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:23:11.453844534Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:23:16.47335568Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:23:16.502456979Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:23:16.502576599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:23:16.523355185Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:23:16.52339473Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:23:16.523444657Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:23:16.523456237Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:23:16.523465766Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:23:21.54032354Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:23:21.568112807Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:23:21.568225145Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:23:21.589742446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:23:21.58978342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:23:21.589796213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:23:21.589807785Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:23:21.589816477Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:23:26.604347172Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:23:26.633337953Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:23:26.633439304Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:23:26.653859614Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:23:26.653904072Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:23:26.653917701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:23:26.65392893Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:23:26.653938087Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:23:31.668531813Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:23:31.699265886Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:23:31.699373052Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:23:31.721061443Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:23:31.721118466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:23:31.721134491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:23:31.72114509Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:23:31.721153618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:23:36.738293035Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:23:36.768803591Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:23:36.768900408Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:23:36.788760727Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:23:36.788816426Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:23:36.788831935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:23:36.788842343Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:23:36.788850907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:23:41.803827155Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:23:41.832540828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:23:41.832643427Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:23:41.855531693Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:23:41.855573365Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:23:41.855586986Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:23:41.855598275Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:23:41.855608345Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:23:46.873721562Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:23:46.900987843Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:23:46.901090161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:23:46.928766066Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:23:46.928811332Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:23:46.92882568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:23:46.928837635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:23:46.928847208Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:23:51.946908043Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:23:51.97793641Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:23:51.978056629Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:23:51.999205675Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:23:51.999257919Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:23:51.999271669Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:23:51.999281165Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:23:51.999289499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:23:57.015263484Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:23:57.045026855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:23:57.045154249Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:23:57.065916444Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:23:57.065964786Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:23:57.065978671Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:23:57.065989143Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:23:57.065999231Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:24:02.094857087Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:24:02.149784926Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:24:02.149890443Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:24:02.174103673Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:24:02.174149652Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:24:02.174163471Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:24:02.174174701Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:24:02.174183331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:24:07.197968869Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:24:07.225756417Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:24:07.225881284Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:24:07.245677438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:24:07.245722987Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:24:07.245736903Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:24:07.245746691Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:24:07.245765499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:24:12.262292982Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:24:12.29072685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:24:12.290839026Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:24:12.317406413Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:24:12.317450784Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:24:12.317464593Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:24:12.317497753Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:24:12.317508364Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:24:17.338302505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:24:17.366844706Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:24:17.366966038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:24:17.390957366Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:24:17.391002851Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:24:17.391016637Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:24:17.391026376Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:24:17.391036021Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:24:22.411039915Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:24:22.438827845Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:24:22.438933106Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:24:22.459880344Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:24:22.459925639Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:24:22.459939491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:24:22.459949722Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:24:22.459959848Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:24:27.477289168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:24:27.506545461Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:24:27.506659347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:24:27.532342891Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:24:27.532387317Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:24:27.532400417Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:24:27.532412318Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:24:27.532530204Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:24:32.549091126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:24:32.579688779Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:24:32.579777767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:24:32.600417396Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:24:32.600590406Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:24:32.600604014Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:24:32.600614873Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:24:32.600623958Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:24:37.616002574Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:24:37.645165207Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:24:37.645322168Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:24:37.670088207Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:24:37.670129031Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:24:37.67016755Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:24:37.670177919Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:24:37.670185839Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:24:42.685374984Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:24:42.715660982Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:24:42.71576974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:24:42.738952808Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:24:42.738995352Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:24:42.739009264Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:24:42.73902057Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:24:42.739029714Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:24:47.759500126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:24:47.786198904Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:24:47.786344228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:24:47.809735512Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:24:47.80977841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:24:47.809791265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:24:47.809801525Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:24:47.809811471Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:24:52.829516042Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:24:52.858025544Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:24:52.858142275Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:24:52.881009141Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:24:52.881055828Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:24:52.8810714Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:24:52.881082075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:24:52.881090949Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:24:57.899483562Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:24:57.927412088Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:24:57.927527216Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:24:57.948407816Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:24:57.948543382Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:24:57.94855987Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:24:57.948572289Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:24:57.948580687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:25:02.964999758Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:25:02.995919435Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:25:02.996046821Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:25:03.021825299Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:25:03.021870026Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:25:03.02188587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:25:03.021927809Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:25:03.021937263Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:25:08.038116079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:25:08.069924923Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:25:08.07001721Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:25:08.095219757Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:25:08.095648736Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:25:08.095669937Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:25:08.095682753Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:25:08.095693836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:25:13.11827616Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:25:13.147316193Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:25:13.147413984Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:25:13.169460623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:25:13.16950449Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:25:13.169519876Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:25:13.169531355Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:25:13.169542212Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:25:18.189526051Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:25:18.21869911Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:25:18.218809837Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:25:18.242021745Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:25:18.242068728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:25:18.242083573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:25:18.242094334Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:25:18.242101575Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:25:23.26363001Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:25:23.293363455Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:25:23.29345296Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:25:23.318736376Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:25:23.318797546Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:25:23.318811675Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:25:23.318822698Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:25:23.318831063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:25:28.334919933Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:25:28.365656783Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:25:28.365767451Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:25:28.390409774Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:25:28.390452739Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:25:28.3904667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:25:28.390476807Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:25:28.390484781Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:25:33.410705748Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:25:33.441796789Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:25:33.441912232Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:25:33.466557535Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:25:33.466616119Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:25:33.466645676Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:25:33.46665532Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:25:33.466732438Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:25:38.48320313Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:25:38.514088396Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:25:38.514183683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:25:38.535960499Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:25:38.536005962Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:25:38.536019922Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:25:38.536031345Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:25:38.536041767Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:25:43.557266205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:25:43.586732114Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:25:43.586863721Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:25:43.609223304Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:25:43.609278139Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:25:48.623945149Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:25:48.653648741Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:25:48.653773029Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:25:48.675404329Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:25:48.675454458Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:25:53.695293447Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:25:53.725948376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:25:53.726060202Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:25:53.745966043Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:25:53.746008347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:25:53.746023395Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:25:53.746043209Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:25:53.746051648Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:25:58.762389461Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:25:58.791874411Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:25:58.791986844Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:25:58.815530862Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:25:58.815580244Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:25:58.815595929Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:25:58.815605653Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:25:58.815614277Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:26:03.834994661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:26:03.862838653Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:26:03.862945865Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:26:03.88678566Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:26:03.886828823Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:26:03.886841815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:26:03.886852858Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:26:03.886862136Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:26:08.902278935Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:26:08.931596569Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:26:08.931690114Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:26:08.957995586Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:26:08.958039003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:26:08.958052829Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:26:08.958063739Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:26:08.958073612Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:26:13.97831822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:26:14.010185123Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:26:14.010319183Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:26:14.033841899Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:26:14.033883508Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:26:14.033897166Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:26:14.033909634Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:26:14.0339191Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:26:19.049921857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:26:19.078768933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:26:19.078882444Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:26:19.101060564Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:26:19.101105037Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:26:19.101119724Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:26:19.101132347Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:26:19.101151621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:26:24.120268431Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:26:24.149494466Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:26:24.149606271Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:26:24.172569952Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:26:24.172618516Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:26:24.172632299Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:26:24.172643126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:26:24.172651612Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:26:29.188217455Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:26:29.221043902Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:26:29.221159458Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:26:29.246102609Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:26:29.246143137Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:26:29.246156442Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:26:29.246167418Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:26:29.246176974Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:26:34.26794067Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:26:34.299307768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:26:34.299427879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:26:34.319692761Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:26:34.319736096Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:26:34.319749651Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:26:34.319760824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:26:34.319770868Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:26:39.34064643Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:26:39.375379058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:26:39.375471916Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:26:39.402075497Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:26:39.402119709Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:26:39.402134456Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:26:39.402164146Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:26:39.402173818Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:26:44.419142988Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:26:44.44899661Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:26:44.449097734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:26:44.469537178Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:26:44.469591936Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:26:44.469606253Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:26:44.469616608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:26:44.469624625Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:26:49.483860181Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:26:49.515623177Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:26:49.515734289Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:26:49.538185894Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:26:49.538245422Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:26:49.538313116Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:26:49.538325909Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:26:49.538335955Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:26:54.560558323Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:26:54.589484335Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:26:54.589577161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:26:54.611783763Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:26:54.611829363Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:26:54.611843242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:26:54.611854327Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:26:54.61186489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:26:59.627205563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:26:59.656569933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:26:59.656660799Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:26:59.676623919Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:26:59.676666536Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:26:59.676695769Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:26:59.676706539Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:26:59.676714875Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:27:04.695945489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:27:04.726175479Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:27:04.726298851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:27:04.747034138Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:27:04.747090208Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:27:04.747105301Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:27:04.747115036Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:27:04.747123427Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:27:09.7647877Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:27:09.793885122Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:27:09.793986Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:27:09.814345604Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:27:09.814387762Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:27:09.81440223Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:27:09.814412811Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:27:09.814420562Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:27:14.831143641Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:27:14.860314557Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:27:14.860400532Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:27:14.880152379Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:27:14.880195722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:27:14.880210337Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:27:14.880221477Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:27:14.880230105Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:27:19.896290404Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:27:19.925320529Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:27:19.925431638Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:27:19.946672477Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:27:19.946745116Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:27:19.946762096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:27:19.946771941Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:27:19.946780091Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:27:24.966499918Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:27:24.996035124Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:27:24.996138359Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:27:25.01940168Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:27:25.019449134Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:27:25.019463808Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:27:25.019495455Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:27:25.019504589Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:27:30.042278909Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:27:30.074893752Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:27:30.074992318Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:27:30.098523569Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:27:30.098567798Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:27:30.098581617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:27:30.098592263Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:27:30.098600635Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:27:35.117572141Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:27:35.14713561Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:27:35.147265829Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:27:35.17186275Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:27:35.171908324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:27:35.17194135Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:27:35.171953888Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:27:35.171962037Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:27:40.187382991Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:27:40.216926359Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:27:40.217036492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:27:40.239974878Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:27:40.24001927Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:27:40.24003509Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:27:40.240046068Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:27:40.240055585Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:27:45.263376426Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:27:45.293804471Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:27:45.293908135Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:27:45.319665846Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:27:45.31971215Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:27:45.319726477Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:27:45.319738218Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:27:45.319747338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:27:50.335289593Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:27:50.364304946Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:27:50.364399208Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:27:50.384108786Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:27:50.384163712Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:27:50.384180832Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:27:50.384243929Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:27:50.384253673Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:27:55.406957094Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:27:55.448950861Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:27:55.449063864Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:27:55.479524726Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:27:55.479587296Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:27:55.479602493Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:27:55.479613495Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:27:55.479621976Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:28:00.499790797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:28:00.529687192Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:28:00.529800409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:28:00.550428438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:28:00.550471297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:28:00.550485043Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:28:00.5505195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:28:00.550528406Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:28:05.56750422Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:28:05.596161602Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:28:05.596300132Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:28:05.618433283Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:28:05.618479748Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:28:05.61849334Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:28:05.6185061Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:28:05.618514959Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:28:10.633641735Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:28:10.662060464Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:28:10.662183345Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:28:10.68638702Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:28:10.686440923Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:28:10.6864569Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:28:10.686514552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:28:10.686524288Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:28:15.703518603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:28:15.73357016Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:28:15.733692612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:28:15.754773787Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:28:15.754836007Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:28:15.754851601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:28:15.754861687Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:28:15.754869615Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:28:20.77179682Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:28:20.805667117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:28:20.805774917Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:28:20.830617517Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:28:20.830662338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:28:20.830678801Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:28:20.830689381Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:28:20.830698833Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:28:25.853336329Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:28:25.890892409Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:28:25.891442738Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:28:25.926591122Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:28:25.927028684Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:28:25.927054244Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:28:25.927067229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:28:25.927078196Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:28:30.96054627Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:28:31.005946423Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:28:31.008527729Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:28:31.039065427Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:28:31.039139021Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:28:31.039154831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:28:31.039165369Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:28:31.039174434Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:28:36.057531907Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:28:36.087755535Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:28:36.087856371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:28:36.108989475Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:28:36.109037243Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:28:36.109073341Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:28:36.109120117Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:28:36.109128781Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:28:41.127486927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:28:41.156025535Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:28:41.156148187Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:28:41.17897919Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:28:41.179034321Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:28:41.179051093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:28:41.17906253Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:28:41.179071334Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:28:46.197021115Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:28:46.226121987Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:28:46.226266495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:28:46.246761208Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:28:46.246808869Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:28:46.24682353Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:28:46.246835359Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:28:46.246844928Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:28:51.26299381Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:28:51.292715208Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:28:51.292811997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:28:51.313998671Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:28:51.314042107Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:28:51.314057061Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:28:51.314067574Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:28:51.314076034Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:28:56.331285362Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:28:56.361687525Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:28:56.361836853Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:28:56.3872304Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:28:56.387288975Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:28:56.387303488Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:28:56.38732553Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:28:56.387334596Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:29:01.406941552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:29:01.472351005Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:29:01.472503921Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:29:01.510199114Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:29:01.510258514Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:29:01.510272982Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:29:01.510283858Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:29:01.510293531Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:29:06.526508819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:29:06.55730239Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:29:06.557396102Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:29:06.581696431Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:29:06.58175203Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:29:06.581768427Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:29:06.581779027Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:29:06.581787714Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:29:11.59764043Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:29:11.628207318Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:29:11.628310653Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:29:11.648659063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:29:11.648737053Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:29:11.648751958Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:29:11.648761944Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:29:11.648770781Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:29:16.666297268Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:29:16.697138037Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:29:16.697268096Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:29:16.722688064Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:29:16.722732923Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:29:16.722746118Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:29:16.72276843Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:29:16.722777193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:29:21.742666777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:29:21.773157065Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:29:21.773275377Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:29:21.794102849Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:29:21.794148377Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:29:21.794185512Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:29:21.794219557Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:29:21.794228961Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:29:26.813131448Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:29:26.840745274Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:29:26.84086638Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:29:26.864209247Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:29:26.864263929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:29:26.864287693Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:29:26.864298447Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:29:26.864306944Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:29:31.884289663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:29:31.913494476Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:29:31.9135917Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:29:31.937297327Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:29:31.937343684Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:29:36.952389712Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:29:36.980786231Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:29:36.980901098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:29:37.004723988Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:29:37.004769513Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:29:37.004784163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:29:37.004796088Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:29:37.004805205Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:29:42.027274301Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:29:42.057827485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:29:42.057950992Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:29:42.083152669Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:29:42.083196907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:29:42.083268528Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:29:42.083280344Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:29:42.083289214Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:29:47.101714689Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:29:47.131615477Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:29:47.131727453Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:29:47.153779749Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:29:47.153838377Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:29:47.153852635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:29:47.153864297Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:29:47.153872535Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:29:52.174336995Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:29:52.203879691Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:29:52.204007339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:29:52.229456728Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:29:52.229931525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:29:52.229955379Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:29:52.229968422Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:29:52.229979669Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:29:57.24295875Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:29:57.272665914Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:29:57.272777291Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:29:57.295644274Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:29:57.295697373Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:29:57.295713398Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:29:57.295774301Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:29:57.295783964Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:30:02.333144873Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:30:02.449991157Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:30:02.45017211Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:30:02.491170503Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:30:02.491216776Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:30:02.49127356Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:30:02.491285443Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:30:02.49129434Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:30:07.515254869Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:30:07.544173885Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:30:07.544281037Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:30:07.56625974Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:30:07.566301546Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:30:07.566315118Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:30:07.566351427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:30:07.566360579Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:30:12.582429027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:30:12.624708575Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:30:12.624813461Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:30:12.645258641Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:30:12.645301331Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:30:12.645315279Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:30:12.645327852Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:30:12.645337328Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:30:17.659148374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:30:17.689518428Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:30:17.689612151Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:30:17.708638683Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:30:17.709100663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:30:17.709273869Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:30:17.709291372Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:30:17.709302935Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:30:22.727694363Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:30:22.756893546Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:30:22.756985947Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:30:22.780154028Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:30:22.780199501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:30:22.780213335Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:30:22.780224366Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:30:22.780364422Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T19:30:22.780805326Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T19:30:22.780896589Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:30:27.795778313Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:30:27.827164889Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:30:27.827289312Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:30:27.848752304Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:30:27.848793257Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:30:27.848806151Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:30:27.848818544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:30:27.848828423Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:30:32.863517848Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:30:32.895174106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:30:32.895312632Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:30:32.916355927Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:30:32.916412827Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:30:32.916561792Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:30:32.916576344Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:30:32.916586182Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:30:37.935211506Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:30:37.96507654Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:30:37.965216531Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:30:37.9866986Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:30:37.986756277Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:30:37.986772441Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:30:37.986782958Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:30:37.98679133Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:30:43.002078455Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:30:43.033662821Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:30:43.033768637Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:30:43.056325355Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:30:43.05637154Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:30:43.05638619Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:30:43.056409404Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:30:43.056418491Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:30:48.072162485Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:30:48.103015381Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:30:48.10311439Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:30:48.125761602Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:30:48.125805532Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:30:48.125819642Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:30:48.125830415Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:30:48.125839577Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:30:53.139874241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:30:53.174058357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:30:53.174160333Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:30:53.194698659Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:30:53.194762045Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:30:53.194776068Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:30:53.194786041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:30:53.194794342Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:30:58.209554932Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:30:58.243103185Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:30:58.243192107Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:30:58.264972661Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:30:58.265032111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:30:58.265073144Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:30:58.26508319Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:30:58.265092554Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:31:03.280278023Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:31:03.309790078Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:31:03.309881595Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:31:03.331691743Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:31:03.33175268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:31:03.33176684Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:31:03.331777803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:31:03.33178643Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:31:08.348571804Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:31:08.379369204Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:31:08.379482783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:31:08.400193706Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:31:08.400259171Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:31:08.400274262Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:31:08.400284967Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:31:08.40029291Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:31:13.416267905Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:31:13.447175354Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:31:13.447287754Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:31:13.469721071Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:31:13.469792652Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:31:13.46980741Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:31:13.469816921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:31:13.469825489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:31:18.485154638Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:31:18.514442777Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:31:18.51457944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:31:18.535766142Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:31:18.535805275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:31:18.535818558Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:31:18.535829974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:31:18.535838717Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:31:23.551213732Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:31:23.581611603Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:31:23.581730472Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:31:23.604786023Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:31:23.604832671Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:31:23.604847381Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:31:23.60485783Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:31:23.604867825Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:31:28.62036458Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:31:28.649248693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:31:28.64939554Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:31:28.674671102Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:31:33.695084446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:31:33.72405535Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:31:33.7242235Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:31:33.747534668Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:31:33.747576786Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:31:33.747610914Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:31:33.747621475Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:31:33.747629592Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:31:38.76505073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:31:38.793863628Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:31:38.793957426Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:31:38.814814938Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:31:38.814856504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:31:38.814869907Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:31:38.81488197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:31:38.814891064Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:31:43.832277414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:31:43.861277268Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:31:43.861389869Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:31:43.883981277Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:31:43.884048265Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:31:43.884064595Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:31:43.884075374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:31:43.884148408Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:31:48.904986954Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:31:48.934433641Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:31:48.934521706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:31:48.957013586Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:31:48.957061021Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:31:48.957076027Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:31:48.957105212Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:31:48.95711692Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:31:53.975441921Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:31:54.004217682Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:31:54.004558551Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:31:54.027386731Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:31:54.02742782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:31:54.027441951Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:31:54.02745395Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:31:54.027463041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:31:59.042924429Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:31:59.072165047Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:31:59.072295667Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:31:59.095486943Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:31:59.095881935Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:31:59.095906151Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:31:59.095918444Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:31:59.095929429Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:32:04.116214799Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:32:04.145570342Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:32:04.145694538Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:32:04.171613627Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:32:04.171673033Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:32:04.17171783Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:32:04.171743895Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:32:04.171752712Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:32:09.188409583Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:32:09.218762155Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:32:09.218889059Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:32:09.24477099Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:32:09.244811358Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:32:09.244826255Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:32:09.244838253Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:32:09.244847385Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:32:14.265279542Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:32:14.295248077Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:32:14.295357083Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:32:14.318256081Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:32:14.318297509Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:32:14.318310681Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:32:14.318321436Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:32:14.318330666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:32:19.337878554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:32:19.366614434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:32:19.366712787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:32:19.389907799Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:32:19.389955266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:32:19.389970614Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:32:19.389980134Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:32:19.389987815Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:32:24.409444738Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:32:24.438799933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:32:24.438928505Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:32:24.460714829Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:32:24.460770482Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:32:24.460786368Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:32:24.46079677Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:32:24.460805082Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:32:29.477753983Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:32:29.506774568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:32:29.506890507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:32:29.530809969Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:32:29.530851958Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:32:29.530865602Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:32:29.530877595Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:32:29.530886225Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:32:34.547294611Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:32:34.577535602Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:32:34.577643967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:32:34.598659129Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:32:34.598700239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:32:34.598714024Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:32:34.598753948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:32:34.598762648Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:32:39.614654409Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:32:39.646270145Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:32:39.646367148Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:32:39.665733368Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:32:39.665776289Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:32:39.665788715Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:32:39.665800076Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:32:39.665809812Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:32:44.682449062Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:32:44.712763795Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:32:44.712875014Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:32:44.73371825Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:32:44.733757651Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:32:44.733771855Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:32:44.733783968Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:32:44.733793499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:32:49.752340931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:32:49.780260547Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:32:49.780371525Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:32:49.807228066Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:32:49.807285605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:32:49.807301113Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:32:54.823579814Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:32:54.854641327Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:32:54.85474289Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:32:54.876112203Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:32:54.876187419Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:32:54.876202636Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:32:54.876277032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:32:54.87628843Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:32:59.893221768Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:32:59.92464174Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:32:59.924755227Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:32:59.951677572Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:32:59.951721033Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:32:59.951735123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:32:59.951746855Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:32:59.951755692Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:33:04.966293061Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:33:04.995311961Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:33:04.995422078Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:33:05.017821655Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:33:05.017869397Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:33:05.017882895Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:33:10.036301718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:33:10.066312352Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:33:10.066429496Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:33:10.090047878Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:33:10.090090958Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:33:10.090104493Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:33:10.090115339Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:33:10.090124704Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:33:15.108272432Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:33:15.138399499Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:33:15.138522404Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:33:15.159821008Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:33:15.159863788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:33:15.159917049Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:33:15.159929637Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:33:15.1599381Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:33:20.178271002Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:33:20.20942804Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:33:20.209536037Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:33:20.232330951Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:33:20.232384729Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:33:20.232399184Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:33:20.23240875Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:33:20.232577226Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:33:25.24919922Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:33:25.279441977Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:33:25.27956562Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:33:25.304150131Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:33:25.304191457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:33:25.304204926Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:33:25.304216602Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:33:25.304226108Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:33:30.321900522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:33:30.351253504Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:33:30.351359302Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:33:30.371748464Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:33:30.371804318Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:33:30.371819413Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:33:30.371845244Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:33:30.371853391Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:33:35.386472801Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:33:35.41743887Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:33:35.417548871Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:33:35.438930206Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:33:35.438971676Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:33:35.438985071Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:33:35.438998383Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:33:35.439007729Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:33:40.457457011Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:33:40.485134626Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:33:40.485268258Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:33:40.509449441Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:33:40.509492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:33:40.509507568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:33:40.509520081Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:33:40.50952938Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:33:45.527097292Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:33:45.555348217Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:33:45.55543834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:33:45.577214597Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:33:45.577277621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:33:45.577293508Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:33:45.577303126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:33:45.577311199Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:33:50.595548524Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:33:50.624001841Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:33:50.624110492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:33:50.646057085Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:33:50.646099942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:33:50.64611383Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:33:50.646175919Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:33:50.646186074Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:33:55.663076213Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:33:55.6937228Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:33:55.693832755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:33:55.718356539Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:33:55.718410148Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:33:55.718426226Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:33:55.718437591Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:33:55.718444703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:34:00.733422977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:34:00.762231327Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:34:00.762345975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:34:00.783615676Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:34:00.78365846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:34:00.783672096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:34:00.783683046Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:34:05.800946637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:34:05.830895836Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:34:05.830984547Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:34:05.855310393Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:34:05.855354099Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:34:05.855369587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:34:05.855379159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:34:05.855386786Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:34:10.878765075Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:34:10.920156673Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:34:10.920295809Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:34:10.955429859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:34:10.955496396Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:34:10.955510455Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:34:10.955520443Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:34:10.955528293Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:34:15.971479481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:34:15.999733117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:34:15.999829778Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:34:16.02502731Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:34:16.025114293Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:34:16.025132369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:34:16.025144398Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:34:16.025259691Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:34:23.646492775Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:34:23.711734374Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:34:23.711834378Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:34:23.823123943Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:34:23.823168534Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:34:23.823182986Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:34:23.823195087Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:34:23.823205052Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:34:28.842125138Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:34:28.87271914Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:34:28.872826262Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:34:28.895114776Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:34:28.895162165Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:34:28.895177369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:34:28.895188247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:34:28.895196854Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:34:33.911194155Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:34:33.940203989Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:34:33.940330037Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:34:33.963814851Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:34:33.963862371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:34:33.963876474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:34:33.963886682Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:34:33.963896357Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:34:38.984444327Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:34:39.01133688Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:34:39.011461834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:34:39.032049889Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:34:39.032115808Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:34:39.03213117Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:34:39.032142912Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:34:39.032151759Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:34:44.046516672Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:34:44.07667551Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:34:44.076793313Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:34:44.10415193Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:34:44.104197575Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:34:44.104210625Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:34:44.104221953Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:34:44.104230726Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:34:49.12487231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:34:49.154993345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:34:49.155096287Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:34:49.176076341Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:34:49.176121424Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:34:49.17613639Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:34:49.17614814Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:34:49.176158298Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:34:54.190617514Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:34:54.22380668Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:34:54.223902656Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:34:54.24758684Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:34:54.247634183Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:34:54.24764901Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:34:54.247660947Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:34:54.247670232Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:34:59.264071095Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:34:59.295420895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:34:59.295526665Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:34:59.321496884Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:34:59.321543106Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:34:59.321556375Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:34:59.321567098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:34:59.321576091Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:35:04.337396328Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:35:04.367612274Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:35:04.367709123Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:35:04.392688995Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:35:04.392733607Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:35:04.392748677Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:35:04.392761616Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:35:04.392771055Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:35:09.41342166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:35:09.442072012Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:35:09.442182483Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:35:09.46448182Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:35:09.46452887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:35:09.464542298Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:35:09.464553524Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:35:09.464562442Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:35:14.482068888Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:35:14.512107401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:35:14.51219833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:35:14.532089152Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:35:14.532135549Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:35:14.532148308Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:35:14.532188284Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:35:14.532197884Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:35:19.551923021Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:35:19.584079283Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:35:19.584185224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:35:19.610446812Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:35:19.610487816Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:35:19.610502424Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:35:19.610512377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:35:19.610521347Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:35:24.628260166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:35:24.657400387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:35:24.657506023Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:35:24.680578647Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:35:24.680620803Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:35:24.68063472Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:35:24.680644812Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:35:24.680653505Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:35:29.69846624Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:35:29.729933168Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:35:29.730051488Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:35:29.754789913Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:35:29.75483153Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:35:29.754845385Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:35:29.754856013Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:35:29.754865686Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:35:34.770756113Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:35:34.800350662Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:35:34.800544101Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:35:34.822644906Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:35:34.822697695Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:35:39.841605882Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:35:39.87171424Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:35:39.871813538Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:35:39.896648791Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:35:39.896693287Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:35:39.896707269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:35:39.896742895Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:35:39.896752986Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:35:44.91427057Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:35:44.944260923Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:35:44.944372939Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:35:44.966189513Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:35:44.966229189Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:35:44.96625551Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:35:44.966266989Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:35:44.966275204Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:35:49.980748363Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:35:50.01248509Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:35:50.012604683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:35:50.035929585Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:35:50.03597224Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:35:50.035988959Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:35:50.036001312Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:35:50.036012128Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:35:55.052289153Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:35:55.082196955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:35:55.082384002Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:35:55.105756904Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:35:55.105823847Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:35:55.105839211Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:35:55.105849942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:35:55.105857124Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:36:00.12505099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:36:00.233074832Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:36:00.233193846Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:36:00.257651418Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:36:00.2576966Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:36:00.257710315Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:36:00.25772175Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:36:00.257730935Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:36:05.27281615Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:36:05.304675625Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:36:05.304821335Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:36:05.327198072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:36:05.327262132Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:36:05.32727741Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:36:05.327287558Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:36:05.327295487Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:36:10.344849439Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:36:10.37852316Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:36:10.37863523Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:36:10.40384344Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:36:10.403885668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:36:10.403899952Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:36:10.403930339Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:36:10.403939657Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:36:15.42033446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:36:15.447782386Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:36:15.447873955Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:36:15.472868613Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:36:15.472929091Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:36:15.472944196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:36:15.472954091Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:36:15.472962435Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:36:20.495917981Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:36:20.525490774Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:36:20.525591403Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:36:20.547129761Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:36:20.547169509Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:36:20.547182855Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:36:20.54719456Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:36:20.547204597Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:36:25.564270609Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:36:25.594060891Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:36:25.594175793Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:36:25.616913501Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:36:25.616956261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:36:25.616971404Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:36:25.616984628Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:36:25.616993534Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:36:30.632068099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:36:30.661810448Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:36:30.661923926Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:36:30.687303088Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:36:30.687346004Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:36:30.687361526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:36:30.687374377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:36:30.68738341Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:36:35.702293396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:36:35.730410343Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:36:35.73049751Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:36:35.749338274Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:36:35.74938087Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:36:35.749394228Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:36:35.74940499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:36:35.749413299Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:36:40.766443991Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:36:40.797096592Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:36:40.797226468Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:36:40.822078935Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:36:40.822121726Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:36:40.8221351Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:36:40.822146529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:36:40.822157655Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:36:45.839432738Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:36:45.868333264Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:36:45.86851647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:36:45.891575257Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:36:45.891631Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:36:45.891645645Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:36:45.891656008Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:36:45.891663965Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:36:50.909581542Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:36:50.939595426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:36:50.939708924Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:36:50.962016209Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:36:50.962058804Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:36:50.962072204Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:36:50.962083215Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:36:50.962091231Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:36:55.98035625Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:36:56.010667985Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:36:56.010784465Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:36:56.03411908Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:36:56.034179511Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:36:56.034194269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:36:56.034204348Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:36:56.034212592Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:37:01.054096687Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:37:01.107755266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:37:01.10834005Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:37:01.134386191Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:37:01.134427512Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:37:01.134476506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:37:01.134487582Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:37:01.134496326Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:37:06.151095732Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:37:06.179781594Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:37:06.179874642Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:37:06.203693489Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:37:06.20373778Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:37:06.203752357Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:37:06.203764796Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:37:06.203774797Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:37:11.216686053Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:37:11.247629608Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:37:11.247758201Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:37:11.267445459Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:37:11.267490388Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:37:11.267504841Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:37:11.267516229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:37:11.267524685Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:37:16.284414861Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:37:16.314718305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:37:16.314816956Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:37:16.337489138Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:37:16.337548865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:37:16.337564185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:37:16.337574012Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:37:16.337582474Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:37:21.35906723Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:37:21.389461984Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:37:21.389553871Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:37:21.414399214Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:37:21.414440319Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:37:21.41445316Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:37:21.414463957Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:37:21.414473364Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:37:26.431220113Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:37:26.461264312Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:37:26.461357795Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:37:26.483138323Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:37:26.48319618Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:37:26.48321094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:37:26.483255272Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:37:26.483264688Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:37:31.498291153Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:37:31.526179955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:37:31.526299642Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:37:31.54920664Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:37:31.54925925Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:37:31.549273654Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:37:31.549284105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:37:31.549293967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:37:36.564695741Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:37:36.594655612Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:37:36.594781462Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:37:36.618253681Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:37:36.618296186Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:37:36.618313117Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:37:36.618323719Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:37:36.618332963Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:37:41.64032191Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:37:41.671133042Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:37:41.671272473Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:37:41.694821059Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:37:41.694873779Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:37:41.694890239Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:37:41.694901089Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:37:41.694909583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:37:46.713276839Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:37:46.741501605Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:37:46.741620487Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:37:46.762576525Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:37:46.76261713Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:37:46.762630494Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:37:46.762641842Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:37:46.762660436Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:37:51.780307424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:37:51.811219783Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:37:51.811346613Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:37:51.832682481Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:37:51.832735079Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:37:51.832750885Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:37:51.832792399Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:37:51.832801367Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:37:56.848264567Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:37:56.875491267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:37:56.875600887Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:37:56.897610262Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:37:56.897654401Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:37:56.897670227Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:37:56.897682436Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:37:56.897691014Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:38:01.925586798Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:38:02.043513192Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:38:02.043653657Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:38:02.086429206Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:38:02.08648149Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:38:02.086496591Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:38:02.086506817Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:38:02.086516334Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:38:07.103082068Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:38:07.133519569Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:38:07.133624123Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:38:07.154529222Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:38:07.154573045Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:38:07.154586245Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:38:07.154596274Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:38:07.154606237Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:38:12.174514202Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:38:12.205844258Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:38:12.205934825Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:38:12.228389288Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:38:12.228579587Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:38:12.228596579Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:38:12.22860784Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:38:12.228616648Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:38:17.245000733Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:38:17.275065458Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:38:17.275176952Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:38:17.299177376Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:38:17.299257215Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:38:17.299274235Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:38:17.299286492Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:38:17.299295828Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:38:22.318291511Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:38:22.348343357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:38:22.348537794Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:38:22.375949997Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:38:22.375996432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:38:22.376011369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:38:22.376023078Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:38:22.376031832Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:38:27.392041698Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:38:27.422556561Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:38:27.422664434Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:38:27.445544909Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:38:27.445591648Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:38:27.445605513Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:38:27.445618156Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:38:27.445627092Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:38:32.470451289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:38:32.500158284Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:38:32.500281902Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:38:32.524730138Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:38:32.524775666Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:38:32.524789738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:38:32.5248276Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:38:32.524837039Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:38:37.542401695Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:38:37.57399732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:38:37.574104121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:38:37.595036159Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:38:37.595094497Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:38:37.595111123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:38:37.595123474Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:38:37.595132931Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:38:42.614486839Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:38:42.645521782Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:38:42.645614197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:38:42.667827203Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:38:42.667869735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:38:42.667884463Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:38:42.667894754Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:38:42.66790401Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:38:47.686424073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:38:47.716116969Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:38:47.716242886Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:38:47.738724853Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:38:47.738766193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:38:47.738779143Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:38:47.738790797Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:38:47.738799969Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:38:52.758102544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:38:52.789628018Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:38:52.789774377Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:38:52.810333268Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:38:52.810373067Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:38:52.810386731Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:38:52.810397513Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:38:52.810405835Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:38:57.827165552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:38:57.859151152Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:38:57.859290362Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:38:57.885459336Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:38:57.885506964Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:38:57.885522162Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:38:57.885533829Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:38:57.885543853Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:39:02.907200083Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:39:02.936917005Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:39:02.937014986Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:39:02.960574546Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:39:02.960631875Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:39:02.960670002Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:39:02.960704466Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:39:02.960713956Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:39:07.977477825Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:39:08.008902181Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:39:08.009032266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:39:08.030885007Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:39:08.030929288Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:39:08.030943172Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:39:08.030955412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:39:08.030965059Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:39:13.054968635Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:39:13.083379807Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:39:13.083497912Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:39:13.106312208Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:39:13.106352198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:39:13.106366248Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:39:13.106424017Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:39:13.106433334Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:39:18.124758027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:39:18.153022276Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:39:18.153127513Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:39:18.173948271Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:39:18.17400959Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:39:18.174023876Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:39:18.174035717Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:39:18.174045188Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:39:23.199273517Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:39:23.228089436Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:39:23.228202128Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:39:23.250316122Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:39:23.250356999Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:39:23.250370087Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:39:23.250382098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:39:23.250391663Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:39:28.266540863Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:39:28.296806701Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:39:28.296925468Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:39:28.318037446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:39:28.318080059Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:39:28.318094067Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:39:28.31810715Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:39:28.318116335Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:39:33.334287094Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:39:33.364912417Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:39:33.365026859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:39:33.389954331Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:39:33.389994909Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:39:33.390007765Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:39:33.390019195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:39:33.390029145Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:39:38.408606169Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:39:38.438669079Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:39:38.438777804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:39:38.460220147Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:39:38.46027702Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:39:38.460292643Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:39:38.460302412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:39:38.46031115Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:39:43.481076453Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:39:43.513545979Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:39:43.51363979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:39:43.534016621Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:39:43.534058652Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:39:43.534073107Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:39:43.534083451Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:39:43.534093229Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:39:48.552129007Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:39:48.57997543Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:39:48.580060578Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:39:48.60434994Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:39:48.604393061Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:39:48.604406206Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:39:48.604417452Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:39:48.604427294Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:39:53.622621073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:39:53.656171107Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:39:53.656298728Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:39:53.681820994Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:39:53.681865062Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:39:53.681880229Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:39:53.681892045Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:39:53.681901486Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:39:58.70208197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:39:58.730426933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:39:58.730540148Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:39:58.752341081Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:39:58.752382701Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:39:58.752396881Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:39:58.752408785Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:39:58.752417731Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:40:03.77502947Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:40:03.805150337Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:40:03.805252606Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:40:03.832425251Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:40:03.832633348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:40:03.832647674Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:40:03.832657453Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:40:03.832666186Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:40:08.851341231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:40:08.881108143Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:40:08.881219465Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:40:08.902410788Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:40:08.902454487Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:40:08.902466976Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:40:08.90247884Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:40:08.902488512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:40:13.916423853Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:40:13.94625177Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:40:13.946372774Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:40:13.972068046Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:40:13.972117069Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:40:13.972131745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:40:13.972143428Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:40:13.972151862Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:40:18.988750485Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:40:19.019360851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:40:19.019462726Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:40:19.04059787Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:40:19.040640207Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:40:19.040654373Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:40:19.040666034Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:40:19.040674947Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:40:24.059275847Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:40:24.088293347Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:40:24.088415376Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:40:24.114034761Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:40:24.114297611Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:40:24.114318378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:40:24.114328968Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:40:24.114338124Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:40:29.132268423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:40:29.160309482Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:40:29.160424547Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:40:29.185450751Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:40:29.185493357Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:40:29.185510251Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:40:29.185522734Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:40:29.185532287Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:40:34.200191235Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:40:34.229773459Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:40:34.229867134Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:40:34.253177318Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:40:34.253265315Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:40:34.253280527Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:40:34.253289988Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:40:34.253298548Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:40:39.26926818Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:40:39.296412421Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:40:39.296589173Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:40:39.320252257Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:40:39.320296121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:40:39.320309646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:40:39.320321013Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:40:39.320330366Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:40:44.33648793Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:40:44.366121981Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:40:44.366213692Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:40:44.390039966Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:40:44.390082602Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:40:44.390097125Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:40:44.390109155Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:40:44.390127843Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:40:49.410169282Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:40:49.440041179Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:40:49.44013297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:40:49.462933575Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:40:49.462978439Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:40:49.46302152Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:40:49.463038449Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:40:49.463046553Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:40:54.479084411Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:40:54.509075897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:40:54.509188588Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:40:54.532218767Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:40:54.532274276Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:40:54.532290867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:40:54.532300406Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:40:54.532309386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:40:59.552214979Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:40:59.579454389Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:40:59.579563041Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:40:59.606649494Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:40:59.606718398Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:40:59.606733046Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:40:59.606743572Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:40:59.606751463Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:41:04.622518007Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:41:04.651846065Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:41:04.651948331Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:41:04.673175707Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:41:04.673667832Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:41:04.673905045Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:41:04.674013365Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:41:04.674027694Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:41:09.697094159Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:41:09.725784186Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:41:09.726265756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:41:09.750458344Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:41:09.750519884Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:41:09.750534122Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:41:09.750544638Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:41:09.750552913Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:41:14.766762041Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:41:14.79732862Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:41:14.797446905Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:41:14.822416628Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:41:14.822461062Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:41:14.822477379Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:41:14.822489155Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:41:14.822500696Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:41:19.839704736Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:41:19.869329569Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:41:19.86941853Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:41:19.890651964Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:41:19.890695272Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:41:19.890711514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:41:19.890752182Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:41:19.890761868Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:41:24.906974302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:41:24.935989804Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:41:24.936116975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:41:24.956596583Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:41:24.956640191Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:41:24.956655343Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:41:24.956668521Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:41:24.956677716Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:41:29.977580079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:41:30.033138637Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:41:30.033293495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:41:30.05922535Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:41:30.059613279Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:41:30.059636287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:41:30.05965054Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:41:30.059661958Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:41:35.077681222Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:41:35.109053416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:41:35.109192449Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:41:35.133946152Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:41:35.133989352Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:41:35.134002625Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:41:35.134014911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:41:35.134024015Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:41:40.153310147Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:41:40.182494981Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:41:40.182590919Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:41:40.20329561Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:41:40.2033417Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:41:40.203355975Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:41:40.203367229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:41:40.203376018Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:41:45.2195857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:41:45.249522397Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:41:45.249606004Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:41:45.274053434Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:41:45.274097846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:41:45.274111094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:41:45.274122594Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:41:45.274132174Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:41:50.293757168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:41:50.325058855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:41:50.325173607Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:41:50.345510256Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:41:50.3455567Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:41:50.345571166Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:41:50.345584552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:41:50.34559396Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:41:55.361175696Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:41:55.392294141Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:41:55.392395978Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:41:55.417448861Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:41:55.417838534Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:41:55.417885199Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:41:55.417898834Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:41:55.417910316Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:42:00.440761606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:42:00.47216192Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:42:00.472274214Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:42:00.496132558Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:42:00.496175051Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:42:00.496189926Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:42:00.496222203Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:42:00.496231462Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:42:05.510284747Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:42:05.540171445Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:42:05.540282464Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:42:05.568592958Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:42:05.568644541Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:42:05.568659363Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:42:05.568671399Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:42:05.568680905Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:42:10.591151298Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:42:10.620781096Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:42:10.620900727Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:42:10.645920561Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:42:10.645976067Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:42:10.645992348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:42:10.646052976Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:42:10.646063642Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:42:15.662291966Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:42:15.689560746Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:42:15.689677121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:42:15.710148662Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:42:15.710194682Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:42:20.73414671Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:42:20.762096184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:42:20.76218645Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:42:20.786005296Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:42:20.786048487Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:42:20.786061585Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:42:20.786073099Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:42:20.786083111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:42:25.802540652Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:42:25.833627189Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:42:25.833739715Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:42:25.857813601Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:42:25.857860589Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:42:25.857875919Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:42:25.857905362Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:42:25.857914273Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:42:30.880866666Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:42:30.914970501Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:42:30.915107949Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:42:30.939753653Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:42:30.939811802Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:42:30.939826355Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:42:30.939836751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:42:30.939845816Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:42:35.955620144Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:42:35.98484918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:42:35.984941398Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:42:36.011588393Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:42:36.011634093Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:42:36.011647985Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:42:36.011658872Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:42:36.011667866Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:42:41.03349123Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:42:41.061788535Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:42:41.061886686Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:42:41.081866667Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:42:41.081910083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:42:41.081924151Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:42:41.081936816Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:42:41.081946201Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:42:46.09949362Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:42:46.133695918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:42:46.133811696Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:42:46.155965573Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:42:46.156032187Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:42:46.156047319Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:42:46.156115019Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:42:46.156124852Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:42:51.174173949Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:42:51.205431255Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:42:51.205526011Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:42:51.229689118Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:42:51.229744876Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:42:51.229759629Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:42:51.229770705Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:42:51.229779299Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:42:56.249311956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:42:56.278892203Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:42:56.278994823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:42:56.302979206Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:42:56.303018931Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:42:56.303032662Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:42:56.303043833Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:42:56.303053343Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:43:01.330285783Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:43:01.368309667Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:43:01.368552739Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:43:01.394257152Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:43:01.394300537Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:43:01.394316304Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:43:01.394369716Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:43:01.39437952Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:43:06.411273482Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:43:06.441253131Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:43:06.441352942Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:43:06.462420438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:43:06.462815913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:43:06.462838985Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:43:06.462851769Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:43:06.462863054Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:43:11.481680143Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:43:11.511496032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:43:11.511590874Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:43:11.531074275Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:43:11.531114367Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:43:11.531129162Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:43:11.53114006Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:43:11.531149987Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:43:16.548980971Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:43:16.577779398Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:43:16.577891462Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:43:16.603961729Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:43:16.604002505Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:43:21.620812372Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:43:21.648664595Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:43:21.648775568Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:43:21.672862655Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:43:21.67290729Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:43:21.672920985Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:43:21.672933074Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:43:21.672942314Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:43:26.688350644Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:43:26.718386834Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:43:26.718499265Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:43:26.738891238Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:43:26.738935942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:43:26.73895074Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:43:26.738961088Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:43:26.738971246Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:43:31.76128301Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:43:31.788355042Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:43:31.788563539Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:43:31.808198171Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:43:31.808268689Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:43:31.808283606Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:43:31.808294438Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:43:31.808302274Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:43:36.826369632Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:43:36.85762132Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:43:36.857754262Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:43:36.880969495Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:43:36.881012118Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:43:36.881066603Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:43:36.881078851Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:43:36.881087108Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:43:41.905311766Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:43:41.934791374Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:43:41.934901978Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:43:41.957248504Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:43:41.957293268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:43:41.957306977Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:43:41.957320356Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:43:41.957329532Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:43:46.973469117Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:43:47.002288433Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:43:47.002383298Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:43:47.027374513Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:43:47.027422031Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:43:47.027437786Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:43:47.027450132Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:43:47.027459983Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:43:52.046556266Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:43:52.077063108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:43:52.077620983Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:43:52.099874412Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:43:52.09993178Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:43:52.099947694Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:43:52.099958239Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:43:52.09996624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:43:57.115941631Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:43:57.146870421Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:43:57.146984284Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:43:57.170600551Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:43:57.170646754Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:43:57.170661917Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:43:57.170672555Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:43:57.170682112Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:44:02.192265656Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:44:02.221564944Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:44:02.221687661Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:44:02.244025623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:44:02.244066274Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:44:02.244080377Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:44:02.244091377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:44:02.244099515Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:44:07.260389194Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:44:07.290138457Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:44:07.290248661Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:44:07.314847563Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:44:07.314907849Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:44:07.314922185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:44:07.314986901Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:44:07.314996755Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:44:12.334311098Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:44:12.36018951Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:44:12.360300856Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:44:12.38294793Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:44:12.382994229Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:44:12.383007653Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:44:12.383019074Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:44:12.383028028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:44:17.402222843Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:44:17.431824173Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:44:17.431931829Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:44:17.452079446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:44:17.452122366Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:44:17.452136195Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:44:17.452149544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:44:17.452157838Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:44:22.467857226Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:44:22.497671747Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:44:22.497795349Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:44:22.519357376Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:44:22.51941593Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:44:22.519431478Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:44:22.519440652Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:44:22.519449763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:44:27.534480512Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:44:27.565766244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:44:27.565859312Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:44:27.585398916Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:44:27.585440675Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:44:27.585455145Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:44:27.585467339Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:44:27.585476011Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:44:32.603973544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:44:32.634344103Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:44:32.63445957Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:44:32.658827225Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:44:37.675378479Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:44:37.706215388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:44:37.706348927Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:44:37.729900819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:44:37.729946556Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:44:37.729961219Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:44:37.729972843Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:44:37.72998213Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:44:42.748461045Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:44:42.776745786Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:44:42.776842172Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:44:42.798062568Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:44:42.798105515Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:44:42.798118803Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:44:42.798130436Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:44:42.798139762Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:44:47.81783785Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:44:47.843388027Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:44:47.843489963Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:44:47.862923304Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:44:47.862977646Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:44:47.862991415Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:44:47.863000619Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:44:47.863008609Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:44:52.879005015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:44:52.909086566Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:44:52.90922543Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:44:52.932796079Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:44:52.932856111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:44:52.932870604Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:44:52.932880809Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:44:52.932889402Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:44:57.951392708Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:44:57.981510332Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:44:57.981628476Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:44:58.007303731Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:44:58.007348496Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:44:58.007362639Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:44:58.007375532Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:44:58.007385086Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:45:03.026286695Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:45:03.056721086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:45:03.056843923Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:45:03.079929211Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:45:03.079973443Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:45:03.079986341Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:45:03.079998062Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:45:03.080007778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:45:08.09793573Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:45:08.130071853Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:45:08.130172575Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:45:08.152179187Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:45:08.152226432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:45:08.152252428Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:45:08.152264849Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:45:08.15227314Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:45:13.169668219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:45:13.200700242Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:45:13.20081586Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:45:13.222450462Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:45:13.222493712Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:45:13.222534565Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:45:13.222546459Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:45:13.222554481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:45:18.245382168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:45:18.275657047Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:45:18.275753752Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:45:18.295881283Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:45:18.295938117Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:45:18.295954433Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:45:23.317288631Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:45:23.346590382Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:45:23.346693558Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:45:23.368902809Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:45:23.368944929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:45:23.368960545Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:45:23.368970807Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:45:23.368980339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:45:28.388281403Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:45:28.416956513Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:45:28.417069734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:45:28.440061372Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:45:28.440102184Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:45:28.440114876Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:45:28.440127562Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:45:28.440136921Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:45:33.458414751Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:45:33.48989846Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:45:33.489989835Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:45:33.514228604Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:45:33.514297657Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:45:33.514332273Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:45:33.51434281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:45:33.514351371Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:45:38.529267156Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:45:38.556793319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:45:38.556886867Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:45:38.579399478Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:45:38.579441513Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:45:38.579456399Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:45:38.579466617Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:45:38.579476517Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:45:43.601154656Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:45:43.627918644Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:45:43.628029228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:45:43.648346027Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:45:43.648391967Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:45:43.64840738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:45:43.648496623Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:45:43.648508253Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:45:48.666427038Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:45:48.696119492Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:45:48.696280512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:45:48.721973581Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:45:48.722018792Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:45:48.722033087Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:45:48.722043736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:45:48.722051893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:45:53.743941019Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:45:53.776306001Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:45:53.7765812Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:45:53.800858425Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:45:53.800899459Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:45:53.800912667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:45:53.800923557Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:45:53.800933347Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:45:58.818276759Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:45:58.849138379Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:45:58.849262274Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:45:58.873186998Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:45:58.873246136Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:45:58.873262039Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:45:58.873272359Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:45:58.873281296Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:46:03.889262324Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:46:03.918984554Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:46:03.919085195Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:46:03.9415758Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:46:03.941618636Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:46:03.941632178Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:46:03.941645155Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:46:03.941654586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:46:08.957198549Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:46:08.986558293Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:46:08.986677025Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:46:09.010843276Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:46:09.010882765Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:46:14.027737526Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:46:14.058074583Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:46:14.058189149Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:46:14.078624483Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:46:14.078665714Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:46:14.078678771Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:46:14.078690896Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:46:14.078700209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:46:19.099785117Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:46:19.128497231Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:46:19.128612918Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:46:19.149551637Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:46:19.149601058Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:46:19.149616527Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:46:24.16826622Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:46:24.198877093Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:46:24.198971376Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:46:24.218963243Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:46:24.219009553Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:46:24.219024005Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:46:24.219040552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:46:24.219048923Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:46:29.236223814Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:46:29.26575108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:46:29.265866288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:46:29.286487189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:46:29.286537544Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:46:29.286551762Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:46:29.286560898Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:46:29.286569059Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:46:34.303280921Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:46:34.331958615Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:46:34.332077085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:46:34.353669815Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:46:34.353712938Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:46:34.353727377Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:46:34.35373716Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:46:34.353746626Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:46:39.370380096Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:46:39.39945929Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:46:39.39955137Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:46:39.423684863Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:46:39.423724109Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:46:44.440024531Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:46:44.470028393Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:46:44.47014838Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:46:44.493282029Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:46:44.493326217Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:46:44.493342093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:46:44.493352853Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:46:44.493362806Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:46:49.51092452Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:46:49.540329575Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:46:49.540514615Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:46:49.563906543Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:46:49.563953384Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:46:49.563967588Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:46:49.563979651Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:46:49.563998137Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:46:54.581217914Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:46:54.611576732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:46:54.611667979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:46:54.632014331Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:46:54.63207822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:46:54.632123412Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:46:54.632134351Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:46:54.632142759Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:46:59.650742297Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:46:59.681087654Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:46:59.68117951Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:46:59.701855009Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:46:59.701900972Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:46:59.70191459Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:46:59.701925517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:46:59.701935231Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:47:04.719307755Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:47:04.747093627Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:47:04.74718565Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:47:04.767670753Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:47:04.767717949Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:47:04.767737084Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:47:04.767786497Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:47:04.767796585Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:47:09.787321952Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:47:09.812355739Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:47:09.812593532Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:47:09.833443968Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:47:09.83349281Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:47:09.83350716Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:47:09.833518184Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:47:09.833526764Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:47:14.850145519Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:47:14.878337588Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:47:14.878461459Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:47:14.899375457Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:47:14.899428329Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:47:14.899444036Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:47:14.89946436Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:47:14.899641416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:47:19.917169227Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:47:19.948597475Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:47:19.948714648Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:47:19.96972955Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:47:19.969772388Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:47:19.969790028Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:47:19.969831605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:47:19.969841123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:47:24.987114597Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:47:25.018086011Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:47:25.01819821Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:47:25.041507705Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:47:25.041549126Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:47:25.041563658Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:47:25.041583192Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:47:25.041592526Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:47:30.059715609Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:47:30.0903102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:47:30.090429947Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:47:30.112086085Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:47:30.112130646Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:47:30.112144941Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:47:30.112156112Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:47:35.130293799Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:47:35.157977018Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:47:35.158089531Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:47:35.182142644Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:47:35.182197955Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:47:35.182212678Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:47:35.182252037Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:47:35.182262122Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:47:40.198300157Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:47:40.227614642Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:47:40.22773029Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:47:40.251373071Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:47:40.251414126Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:47:40.251427471Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:47:40.251438577Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:47:40.251446681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:47:45.266389728Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:47:45.297606883Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:47:45.297709977Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:47:45.320840236Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:47:45.320901936Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:47:45.320918591Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:47:45.320928551Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:47:45.320937187Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:47:50.339300098Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:47:50.368230662Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:47:50.368340848Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:47:50.390838453Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:47:50.390878518Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:47:50.3909181Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:47:50.390930063Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:47:50.390938292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:47:55.409272587Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:47:55.438538959Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:47:55.438631062Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:47:55.46119252Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:47:55.461250939Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:47:55.461266601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:48:00.482066257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:48:00.511261985Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:48:00.511362215Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:48:00.539259289Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:48:00.539315564Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:48:00.539329667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:48:00.539339939Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:48:00.539349793Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:48:05.556275094Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:48:05.585850359Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:48:05.585939631Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:48:05.609446402Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:48:05.609491939Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:48:05.609505466Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:48:05.609516516Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:48:10.62696146Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:48:10.657810373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:48:10.657928443Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:48:10.68199503Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:48:10.682038995Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:48:10.682080868Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:48:10.682090316Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:48:10.682098656Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:48:15.69977306Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:48:15.73127542Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:48:15.731386913Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:48:15.756660568Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:48:15.756710074Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:48:15.756725351Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:48:15.756736314Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:48:15.75674484Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:48:20.775827349Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:48:20.806941135Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:48:20.807039322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:48:20.830943677Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:48:20.830996258Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:48:20.831010256Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:48:20.831029759Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:48:20.83110192Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:48:25.849273233Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:48:25.876079587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:48:25.876208492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:48:25.900740297Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:48:25.900784215Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:48:25.90079748Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:48:25.900809207Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:48:25.900819541Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:48:30.918779838Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:48:30.948903771Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:48:30.949015187Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:48:30.976728319Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:48:30.976774676Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:48:30.976789084Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:48:30.976801672Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:48:30.976811221Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:48:35.992558208Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:48:36.025192198Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:48:36.025297411Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:48:36.04904136Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:48:36.049100907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:48:36.049115651Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:48:36.049126438Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:48:36.049135321Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:48:41.068986947Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:48:41.101637799Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:48:41.101761348Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:48:41.126968363Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:48:41.12701466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:48:41.127027272Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:48:41.127037611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:48:41.127047062Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:48:46.14344044Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:48:46.172401784Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:48:46.172551448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:48:46.193026605Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:48:46.193066652Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:48:46.193079749Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:48:46.193092368Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:48:46.193101837Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:48:51.210460555Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:48:51.241408536Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:48:51.241538173Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:48:51.264910686Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:48:51.264956265Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:48:51.264972082Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:48:51.264983887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:48:56.282791801Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:48:56.3136462Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:48:56.313753758Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:48:56.336308256Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:48:56.336351411Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:48:56.336365956Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:48:56.336377438Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:48:56.336386595Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:49:01.359603676Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:49:01.400739254Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:49:01.400838303Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:49:01.428900866Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:49:01.42895131Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:49:01.42896613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:49:01.428976754Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:49:01.428986775Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:49:06.445859845Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:49:06.476032524Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:49:06.476144608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:49:06.49929289Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:49:06.499335337Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:49:06.49934946Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:49:06.499360316Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:49:06.49936912Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:49:11.517410067Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:49:11.547021267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:49:11.547131859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:49:11.569809461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:49:11.569852143Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:49:11.569866341Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:49:11.56987784Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:49:11.569887084Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:49:16.58740939Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:49:16.618997089Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:49:16.619083682Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:49:16.639539946Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:49:16.639582621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:49:16.639596802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:49:16.639649578Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:49:16.639659719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:49:21.659268655Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:49:21.689437468Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:49:21.689535833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:49:21.7131032Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:49:21.713563324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:49:21.713586411Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:49:21.713599471Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:49:21.713610163Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:49:26.7286566Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:49:26.759748796Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:49:26.759869039Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:49:26.783342359Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:49:26.783398797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:49:26.783415745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:49:26.783426661Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:49:26.783435332Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:49:31.804197054Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:49:31.838410504Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:49:31.838537961Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:49:31.862566354Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:49:31.862608083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:49:31.86262134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:49:31.862632556Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:49:31.862642387Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:49:36.882458281Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:49:36.910162924Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:49:36.910287051Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:49:36.934801449Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:49:36.93484645Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:49:36.934859873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:49:36.93488793Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:49:36.934896878Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:49:41.955000602Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:49:41.985488516Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:49:41.985601005Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:49:42.010972022Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:49:42.011020694Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:49:42.011034884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:49:42.011045628Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:49:42.011055853Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:49:47.031296917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:49:47.062780589Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:49:47.062887158Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:49:47.085896307Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:49:47.085940287Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:49:47.0859898Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:49:47.086001073Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:49:47.086010722Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:49:52.110416847Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:49:52.140724849Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:49:52.140843165Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:49:52.169092994Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:49:52.169135491Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:49:52.169149505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:49:52.16916094Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:49:52.169170205Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:49:57.188046977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:49:57.220157034Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:49:57.220290341Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:49:57.243685188Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:49:57.243726593Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:49:57.243740439Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:49:57.243751202Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:49:57.243760866Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:50:02.271267107Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:50:02.318930998Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:50:02.319076663Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:50:02.455381523Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:50:02.455430262Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:50:02.455446913Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:50:02.455457089Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:50:02.455467026Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:50:07.490679673Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:50:07.520115316Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:50:07.520205675Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:50:07.545382603Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:50:07.545425658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:50:07.545459869Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:50:07.545474195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:50:07.545485149Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:50:12.562098014Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:50:12.592969944Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:50:12.593065411Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:50:12.617345629Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:50:12.617412156Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:50:12.617429335Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:50:12.617438498Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:50:12.617447419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:50:17.633105256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:50:17.662088745Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:50:17.662196755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:50:17.68749604Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:50:17.687552816Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:50:17.687568975Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:50:17.687580048Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:50:17.687588699Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:50:22.705137888Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:50:22.736314542Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:50:22.736507913Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:50:22.762825234Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:50:22.762867733Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:50:22.762882179Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:50:22.762893138Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:50:22.762903602Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:50:27.779683988Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:50:27.810515471Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:50:27.810631999Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:50:27.834413181Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:50:27.834463161Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:50:27.834479604Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:50:27.834491576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:50:27.834502607Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:50:32.856273857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:50:32.884324074Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:50:32.884572287Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:50:32.909204644Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:50:32.909257269Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:50:32.909272102Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:50:32.909282631Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:50:32.90929246Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:50:37.926161303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:50:37.95620141Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:50:37.956332415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:50:37.981388904Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:50:37.981433535Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:50:37.981447808Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:50:37.981459584Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:50:37.981469542Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:50:42.998334499Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:50:43.030488362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:50:43.030598585Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:50:43.054431194Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:50:43.054472053Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:50:43.054486623Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:50:43.054498487Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:50:43.054509313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:50:48.072840136Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:50:48.100966423Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:50:48.101079482Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:50:48.127065742Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:50:48.12710761Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:50:48.127122631Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:50:48.127133345Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:50:48.127141481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:50:53.143400689Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:50:53.172931232Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:50:53.173047387Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:50:53.19620859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:50:53.196270658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:50:53.196286427Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:50:53.196296711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:50:53.196307786Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:50:58.212608922Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:50:58.241706618Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:50:58.241816755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:50:58.264865625Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:50:58.264911468Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:50:58.264925843Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:50:58.264938949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:50:58.26494742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:51:03.280408256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:51:03.311037374Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:51:03.311164499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:51:03.337088173Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:51:03.337297536Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:51:03.337319182Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:51:03.337349594Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:51:03.337359806Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:51:08.356170565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:51:08.385154478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:51:08.385268481Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:51:08.409630987Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:51:08.409678043Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:51:13.42630663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:51:13.45751672Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:51:13.457606855Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:51:13.484857258Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:51:13.484901207Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:51:13.484917595Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:51:13.484928101Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:51:13.484936981Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:51:18.506327846Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:51:18.539154257Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:51:18.539272184Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:51:18.56660399Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:51:18.566647988Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:51:18.56666202Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:51:18.566672507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:51:18.566681273Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:51:23.584460161Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:51:23.616140056Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:51:23.616259823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:51:23.640185373Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:51:28.655932661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:51:28.686208804Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:51:28.686341969Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:51:28.710227469Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:51:28.710297151Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:51:28.710312308Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:51:28.710322954Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:51:28.710331677Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:51:33.733170519Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:51:33.761664073Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:51:33.761769809Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:51:33.787445148Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:51:33.787500618Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:51:33.78751573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:51:33.787526684Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:51:33.787534928Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:51:38.807454967Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:51:38.837606558Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:51:38.837725042Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:51:38.858770256Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:51:38.858837795Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:51:38.858852056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:51:38.858862882Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:51:38.858870965Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:51:43.874799978Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:51:43.90426565Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:51:43.904367787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:51:43.925052748Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:51:43.925099084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:51:43.925113539Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:51:43.925124979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:51:43.92513602Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:51:48.946943843Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:51:48.974775432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:51:48.974886907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:51:48.999515243Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:51:48.999557515Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:51:48.999570458Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:51:48.999596084Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:51:48.999605338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:51:54.017276928Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:51:54.046367832Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:51:54.04646436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:51:54.074320754Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:51:54.074368417Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:51:54.074381929Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:51:54.074392842Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:51:54.074401979Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:51:59.094269632Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:51:59.123294576Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:51:59.123400006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:51:59.145100079Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:51:59.145142364Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:51:59.145172264Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:51:59.145182538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:51:59.145190973Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:52:04.162275547Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:52:04.193515495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:52:04.193625175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:52:04.218474518Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:52:04.218522713Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:52:04.218537578Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:52:04.218580989Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:52:04.218589601Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:52:09.237651473Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:52:09.268812359Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:52:09.268905971Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:52:09.291691332Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:52:09.291747578Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:52:09.291762513Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:52:09.291773151Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:52:09.291780806Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:52:14.310300527Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:52:14.338647513Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:52:14.338742604Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:52:14.363919619Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:52:14.363960536Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:52:14.363973341Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:52:14.363983654Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:52:14.363991937Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:52:19.38071216Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:52:19.410174344Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:52:19.410276722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:52:19.433785884Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:52:19.433829793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:52:19.433867916Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:52:19.433879483Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:52:19.433895836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:52:24.451641465Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:52:24.48180491Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:52:24.481918242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:52:24.504344724Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:52:24.504385799Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:52:24.504400586Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:52:29.519390352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:52:29.549838744Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:52:29.549948501Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:52:29.573460715Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:52:29.573506875Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:52:29.573522018Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:52:29.573552939Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:52:29.573580036Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:52:34.590277864Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:52:34.619872925Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:52:34.619969883Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:52:34.644066222Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:52:34.644106619Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:52:34.644120137Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:52:34.644154886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:52:34.644164037Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:52:39.665510949Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:52:39.695026258Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:52:39.695131822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:52:39.717710799Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:52:39.717752763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:52:39.717777424Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:52:39.717789223Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:52:39.71779736Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:52:44.738335053Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:52:44.767363899Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:52:44.767491859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:52:44.791881691Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:52:44.791938054Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:52:44.791953325Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:52:44.791986215Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:52:44.7919952Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:52:49.811794294Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:52:49.841606244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:52:49.841721131Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:52:49.866248335Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:52:49.866301773Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:52:49.866316518Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:52:49.866326885Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:52:49.866336071Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:52:54.882419437Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:52:54.908566508Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:52:54.908670782Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:52:54.934758778Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:52:54.934799537Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:52:54.934829294Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:52:54.934840153Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:52:54.934848058Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:52:59.953802507Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:52:59.985370836Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:52:59.985500326Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:53:00.010605746Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:53:00.010654702Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:53:00.010671707Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:53:00.010684373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:53:00.010695161Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:53:05.033270863Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:53:05.063155686Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:53:05.063298031Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:53:05.087599829Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:53:05.087652222Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:53:05.08766648Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:53:05.087677688Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:53:05.087689227Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:53:10.108673024Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:53:10.139457907Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:53:10.139577579Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:53:10.160748309Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:53:10.16079085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:53:10.160805329Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:53:10.160816471Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:53:10.160825776Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:53:15.177805058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:53:15.208049106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:53:15.208154715Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:53:15.232571324Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:53:15.233204017Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:53:15.233229788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:53:15.233255461Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:53:15.23326601Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:53:20.252937177Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:53:20.282679191Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:53:20.28277701Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:53:20.304281913Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:53:20.304322584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:53:20.304336942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:53:20.304347562Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:53:20.304356404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:53:25.321188694Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:53:25.349462545Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:53:25.349582491Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:53:25.370110944Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:53:25.370152678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:53:25.370166834Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:53:25.370207042Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:53:25.37021629Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:53:30.387938952Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:53:30.418130936Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:53:30.418285554Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:53:30.438803144Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:53:30.438847643Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:53:30.438873201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:53:30.438884515Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:53:30.438893165Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:53:35.454536781Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:53:35.487988485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:53:35.488080382Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:53:35.508635041Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:53:35.508683889Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:53:35.508698161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:53:35.508709769Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:53:35.508718305Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:53:40.52430437Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:53:40.554924583Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:53:40.555032073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:53:40.578006602Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:53:40.578049323Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:53:40.578063378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:53:40.578085411Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:53:40.578095041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:53:45.593363487Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:53:45.622628159Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:53:45.622736836Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:53:45.645443157Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:53:45.64548615Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:53:45.645499347Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:53:45.645510225Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:53:45.645518503Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:53:50.661506968Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:53:50.690946725Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:53:50.691057128Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:53:50.716780387Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:53:50.716841205Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:53:50.716856867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:53:50.716866995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:53:50.716875894Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:53:55.735762171Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:53:55.764578054Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:53:55.76467803Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:53:55.788164915Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:53:55.788204634Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:53:55.788269799Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:53:55.788281488Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:53:55.788290252Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:54:00.806288136Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:54:00.834550009Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:54:00.834642333Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:54:00.858790633Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:54:00.85882964Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:54:00.858844032Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:54:00.858855261Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:54:00.858872989Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:54:05.876419896Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:54:05.905154555Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:54:05.905267483Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:54:05.926249503Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:54:05.926304545Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:54:05.926320246Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:54:05.926331997Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:54:05.926340677Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:54:10.9475655Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:54:10.976260693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:54:10.976369853Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:54:11.000617709Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:54:11.000671676Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:54:16.01692329Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:54:16.046412323Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:54:16.046534019Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:54:16.070427169Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:54:16.070474204Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:54:16.070488846Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:54:16.070498353Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:54:16.070506749Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:54:21.091871264Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:54:21.128990924Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:54:21.129105388Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:54:21.150135762Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:54:21.150178401Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:54:21.150191048Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:54:21.150222307Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:54:21.150231217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:54:26.16808489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:54:26.199560505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:54:26.199744305Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:54:26.2236548Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:54:26.22369708Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:54:26.223710307Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:54:26.223721652Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:54:26.223731315Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:54:31.239000064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:54:31.267648388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:54:31.267765356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:54:31.292746352Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:54:31.292792278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:54:31.292807558Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:54:31.292820467Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:54:31.292829552Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:54:36.308284217Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:54:36.337764069Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:54:36.337856074Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:54:36.362741296Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:54:36.362784855Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:54:36.362798408Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:54:36.36281075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:54:36.362819671Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:54:41.377131126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:54:41.408647595Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:54:41.408757987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:54:41.434138579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:54:41.434192789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:54:41.434207687Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:54:41.434217884Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:54:41.434226346Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:54:46.454834603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:54:46.48373075Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:54:46.483825222Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:54:46.50909518Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:54:46.509141324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:54:46.509157511Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:54:46.509168543Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:54:46.50917902Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:54:51.527314845Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:54:51.557065782Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:54:51.557203547Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:54:51.583712224Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:54:51.583767388Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:54:51.583781579Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:54:51.583791013Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:54:51.583799709Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:54:56.60031122Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:54:56.629309369Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:54:56.629428116Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:54:56.649299016Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:54:56.64934309Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:54:56.649356586Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:54:56.64936853Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:54:56.64937929Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:55:01.673300791Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:55:01.745417222Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:55:01.745519073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:55:01.770709796Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:55:01.770757902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:55:01.770772444Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:55:01.770783563Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:55:01.770793102Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:55:06.788148749Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:55:06.81987606Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:55:06.819976335Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:55:06.844960781Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:55:06.845005802Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:55:06.84501935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:55:06.845038605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:55:06.845047152Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:55:11.860131667Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:55:11.889149553Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:55:11.889284222Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:55:11.91151379Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:55:11.911559125Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:55:11.911573913Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:55:11.911585138Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:55:11.911594882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:55:16.929259541Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:55:16.95982701Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:55:16.959933155Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:55:16.985878281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:55:16.985919512Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:55:16.985932283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:55:16.985944793Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:55:16.985954401Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:55:22.008349204Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:55:22.038898989Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:55:22.038993897Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:55:22.060118251Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:55:22.0601608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:55:22.060176509Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:55:22.060188748Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:55:22.060198038Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:55:27.077294163Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:55:27.107177481Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:55:27.107277678Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:55:27.131466933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:55:27.131510823Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:55:27.1315247Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:55:27.131535423Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:55:27.131545517Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:55:32.155145126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:55:32.183525508Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:55:32.183615042Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:55:32.206455582Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:55:32.206500896Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:55:32.206517108Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:55:32.206527412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:55:32.206536123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:55:37.223312269Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:55:37.2556564Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:55:37.255760914Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:55:37.280920728Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:55:37.280962032Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:55:37.280986938Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:55:37.280999013Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:55:37.281008296Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:55:42.300530672Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:55:42.330863622Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:55:42.33097342Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:55:42.35575476Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:55:42.355796375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:55:42.355811266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:55:42.355821697Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:55:42.355830259Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:55:47.374376992Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:55:47.402819226Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:55:47.402932295Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:55:47.427659661Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:55:47.427702681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:55:47.427716021Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:55:47.427757645Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:55:47.427768523Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:55:52.446942091Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:55:52.47476076Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:55:52.474863626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:55:52.496786654Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:55:52.49683164Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:55:52.496845601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:55:52.49685751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:55:52.496867324Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:55:57.512536137Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:55:57.541981552Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:55:57.542077771Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:55:57.56998833Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:55:57.570033392Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:55:57.570046599Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:55:57.570059127Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:55:57.57006885Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:56:02.601570627Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:56:02.633855572Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:56:02.633979836Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:56:02.655428849Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:56:02.65547206Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:56:02.655486161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:56:02.655496622Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:56:02.655505522Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:56:07.672027177Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:56:07.70202553Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:56:07.702144808Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:56:07.723465991Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:56:07.723509531Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:56:07.723525556Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:56:07.723536677Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:56:07.72354605Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:56:12.747520451Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:56:12.777447303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:56:12.777574623Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:56:12.802817687Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:56:12.802860815Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:56:12.802875052Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:56:12.802887567Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:56:12.80289655Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:56:17.8211792Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:56:17.853922434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:56:17.854035158Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:56:17.878298547Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:56:17.878359568Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:56:22.893892378Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:56:22.925567872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:56:22.925662673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:56:22.946745097Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:56:22.946790793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:56:22.946805118Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:56:22.946817708Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:56:22.946827098Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:56:27.961543544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:56:27.990781345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:56:27.990869326Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:56:28.013919388Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:56:28.013965023Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:56:28.013979818Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:56:28.01399093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:56:28.013999627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:56:33.035101261Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:56:33.065710524Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:56:33.065816784Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:56:33.08720675Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:56:33.087263362Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:56:33.087278116Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:56:33.08728764Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:56:33.087298105Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:56:38.106210611Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:56:38.136976046Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:56:38.137089578Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:56:38.160189119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:56:38.160249887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:56:38.160265297Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:56:38.160276938Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:56:38.160285316Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:56:43.177372538Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:56:43.210877059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:56:43.210992954Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:56:43.232986121Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:56:43.233059938Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:56:43.233076818Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:56:43.233156847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:56:43.233187286Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T19:56:43.233483324Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:56:48.250737132Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:56:48.282641985Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:56:48.282751113Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:56:48.303908521Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:56:48.303951065Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:56:48.303964325Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:56:48.303976564Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:56:48.303986447Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:56:53.323179949Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:56:53.353609777Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:56:53.353707414Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:56:53.375571824Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:56:53.375617676Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:56:53.375632166Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:56:53.375670068Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:56:53.375678729Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:56:58.394767255Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:56:58.425768797Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:56:58.425859166Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:56:58.449636749Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:56:58.449682332Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:56:58.449696482Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:56:58.44970859Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:56:58.449718094Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:57:03.465297853Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:57:03.494535025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:57:03.494632886Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:57:03.519830594Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:57:03.519879342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:57:03.519930634Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:57:03.51996529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:57:03.51997362Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:57:08.538296512Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:57:08.568124272Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:57:08.568230244Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:57:08.590601098Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:57:08.5906432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:57:08.590656673Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:57:08.590669396Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:57:08.590678894Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:57:13.610308173Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:57:13.641759888Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:57:13.641884171Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:57:13.666873228Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:57:13.666923414Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:57:13.666951933Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:57:13.666963513Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:57:13.666975645Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:57:18.683161463Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:57:18.715171985Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:57:18.715697378Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:57:18.740265934Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:57:18.740308853Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:57:18.740322946Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:57:18.740359936Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:57:18.740369602Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:57:23.753204276Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:57:23.790343393Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:57:23.79043879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:57:23.814441636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:57:23.814488379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:57:23.814503988Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:57:23.814513643Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:57:23.814524376Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:57:28.831289297Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:57:28.861081109Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:57:28.861202956Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:57:28.883087633Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:57:28.883129517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:57:28.88314403Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:57:28.883155628Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:57:28.883164805Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:57:33.899282668Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:57:33.927017245Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:57:33.927138724Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:57:33.95326537Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:57:33.953307303Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:57:33.95332274Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:57:33.953334949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:57:33.953345663Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:57:38.969107635Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:57:38.998845579Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:57:38.99900162Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:57:39.023583134Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:57:39.023648295Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:57:39.023663388Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:57:39.023675805Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:57:39.023685528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:57:44.039962169Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:57:44.071330846Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:57:44.071437286Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:57:44.093969933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:57:44.094021073Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:57:44.0940368Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:57:44.094046256Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:57:44.094055016Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:57:49.116327671Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:57:49.144596652Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:57:49.144688335Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:57:49.166177176Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:57:49.166222614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:57:49.166248303Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:57:49.166260238Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:57:49.166268885Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:57:54.182638909Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:57:54.214508976Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:57:54.214686528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:57:54.23846916Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:57:54.238510193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:57:54.238524077Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:57:54.238536142Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:57:54.238544763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:57:59.254394583Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:57:59.28366812Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:57:59.283769117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:57:59.307909317Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:57:59.307950704Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:57:59.307966236Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:57:59.307992048Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:57:59.308001611Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:58:04.323280854Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:58:04.352680151Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:58:04.352800539Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:58:04.374624845Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:58:04.375061378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:58:04.375086784Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:58:04.375099282Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:58:04.375110386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:58:09.390303231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:58:09.423552753Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:58:09.423662643Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:58:09.444813282Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:58:09.444856102Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:58:09.444869526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:58:09.44488085Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:58:09.444890405Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:58:14.460317981Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:58:14.492319408Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:58:14.492535851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:58:14.515516881Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:58:14.515562416Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:58:14.515575243Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:58:14.515586421Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:58:14.515595934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:58:19.540086429Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:58:19.569757241Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:58:19.569883588Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:58:19.590412819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:58:19.590456021Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:58:19.590469753Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:58:19.590482173Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:58:19.590492378Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:58:24.604163083Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:58:24.6336684Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:58:24.633786057Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:58:24.65872438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:58:24.658793323Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:58:24.658808957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:58:24.658818959Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:58:24.658948337Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T19:58:24.659046328Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:58:29.677854798Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:58:29.707485026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:58:29.70758797Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:58:29.729760003Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:58:29.729801474Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:58:29.72981364Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:58:29.729826354Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:58:29.729835689Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:58:34.745972979Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:58:34.774517468Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:58:34.774630161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:58:34.799921528Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:58:34.799981626Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:58:34.799996758Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:58:34.80000818Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:58:34.800017156Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:58:39.819935131Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:58:39.85178894Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:58:39.851897777Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:58:39.878712631Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:58:39.87877512Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:58:39.878804141Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:58:39.87885371Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:58:39.878863755Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:58:44.894768862Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:58:44.925595717Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:58:44.925735496Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:58:44.94679595Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:58:44.946842961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:58:44.946883565Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:58:44.946897251Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:58:44.946907101Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:58:49.970943883Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:58:50.000053544Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:58:50.000168005Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:58:50.021535623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:58:50.021581655Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:58:50.021594824Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:58:50.021607288Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:58:50.021616572Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:58:55.03728867Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:58:55.06782437Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:58:55.067933273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:58:55.090577113Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:58:55.090623865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:58:55.090638267Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:58:55.090672643Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:58:55.090681282Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:59:00.11457147Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:59:00.146640714Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:59:00.146737879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:59:00.173465843Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:59:00.17352729Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:59:00.173541619Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:59:00.173553122Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:59:00.173561666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:59:05.189210886Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:59:05.22231013Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:59:05.222450326Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:59:05.247298532Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:59:05.247365591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:59:05.247381902Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:59:05.247392711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:59:05.247401481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:59:10.269369014Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:59:10.297021489Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:59:10.297115575Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:59:10.318908637Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:59:10.318951239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:59:10.318965149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:59:10.318977673Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:59:10.318986936Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:59:15.335296624Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:59:15.369190435Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:59:15.369310632Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:59:15.393626658Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:59:15.393669929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:59:15.393683677Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:59:15.393695061Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:59:15.393703341Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:59:20.419316903Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:59:20.447977721Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:59:20.448069671Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:59:20.473889979Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:59:20.473936511Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:59:20.473949878Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:59:20.473962341Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:59:20.473971674Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:59:25.489475276Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:59:25.520900923Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:59:25.521019594Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:59:25.54879108Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:59:25.548859283Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:59:25.548874503Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:59:25.548884178Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:59:25.548893095Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:59:30.567315661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:59:30.598341728Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:59:30.598433731Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:59:30.620874182Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:59:30.620918502Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:59:30.620933034Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:59:30.620946661Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:59:30.620954976Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:59:35.637907647Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:59:35.671883062Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:59:35.671972239Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:59:35.693405416Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:59:35.693448152Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:59:35.693488021Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:59:35.693499726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:59:35.693508024Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:59:40.711231941Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:59:40.743518882Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:59:40.743648605Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:59:40.768969402Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:59:40.76903089Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:59:40.769056278Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:59:40.769067526Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:59:40.76908581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:59:45.787007366Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:59:45.816340601Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:59:45.816518868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:59:45.837695461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:59:45.837737687Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:59:45.837750413Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:59:45.837760111Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:59:45.837768768Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:59:50.859359311Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:59:50.888712177Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:59:50.88882146Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:59:50.909797567Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:59:50.909840253Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:59:50.909854308Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:59:50.909881742Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:59:50.909891368Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T19:59:55.927792334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T19:59:55.959155021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T19:59:55.959278589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T19:59:55.982821488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T19:59:55.982862123Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T19:59:55.982898487Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T19:59:55.982931104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T19:59:55.982940398Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:00:01.047463579Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:00:01.128048177Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:00:01.128214725Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:00:01.182321997Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:00:01.182362257Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:00:01.182375195Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:00:01.182387Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:00:01.182396337Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:00:06.198546194Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:00:06.231199267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:00:06.231316854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:00:06.254732843Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:00:06.25477634Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:00:06.254789394Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:00:06.254800029Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:00:06.254808908Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:00:11.273306861Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:00:11.302092599Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:00:11.302193905Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:00:11.325957679Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:00:11.325999339Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:00:11.326012999Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:00:16.345184682Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:00:16.376209435Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:00:16.376324408Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:00:16.400318475Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:00:16.400364442Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:00:16.400379591Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:00:16.400391357Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:00:16.400401715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:00:21.419179711Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:00:21.446986212Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:00:21.447088102Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:00:21.46977709Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:00:21.469819361Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:00:21.469832161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:00:21.469843959Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:00:21.469853776Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:00:26.487311421Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:00:26.522691481Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:00:26.522817556Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:00:26.545515066Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:00:26.545560675Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:00:26.545574757Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:00:26.545612045Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:00:26.545620891Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:00:31.564546078Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:00:31.594705309Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:00:31.594809117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:00:31.6173947Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:00:31.617469092Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:00:31.617484003Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:00:31.617495121Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:00:31.617503204Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:00:36.63276864Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:00:36.664921041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:00:36.665016313Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:00:36.689511543Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:00:36.689560955Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:00:36.689576356Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:00:36.68958657Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:00:36.689596622Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:00:41.712043782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:00:41.741468416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:00:41.741561479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:00:41.762975832Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:00:41.763017347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:00:41.763030767Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:00:41.763041472Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:00:41.763051404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:00:46.78328275Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:00:46.813994431Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:00:46.814107591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:00:46.838466693Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:00:46.838513894Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:00:46.83852798Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:00:46.838539163Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:00:46.838546366Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:00:51.853814901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:00:51.882209223Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:00:51.882334501Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:00:51.902341035Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:00:51.902385165Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:00:51.902398305Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:00:51.902409419Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:00:51.902419389Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:00:56.916565789Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:00:56.945594253Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:00:56.945724124Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:00:56.969383438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:00:56.969805057Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:00:56.969828971Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:00:56.969841952Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:00:56.969852721Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:01:02.000692898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:01:02.142479078Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:01:02.142911591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:01:02.213585481Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:01:02.213691142Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:01:02.213744633Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:01:02.213758826Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:01:02.213767564Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:01:07.245602517Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:01:07.276121939Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:01:07.276228013Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:01:07.296921203Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:01:07.296971533Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:01:07.296985819Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:01:07.297033334Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:01:07.297042775Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:01:12.312359387Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:01:12.341257137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:01:12.341366514Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:01:12.361695086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:01:12.361737129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:01:12.361751234Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:01:12.36176194Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:01:12.361771483Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:01:17.38126939Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:01:17.407605556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:01:17.407710881Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:01:17.432584546Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:01:17.433020805Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:01:17.433041181Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:01:17.433052533Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:01:17.43306195Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:01:22.454035633Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:01:22.485194473Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:01:22.485346858Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:01:22.507608498Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:01:22.50813777Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:01:22.508164443Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:01:22.508178617Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:01:22.508190548Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:01:27.522810918Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:01:27.550758074Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:01:27.550870702Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:01:27.574577384Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:01:27.574631785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:01:27.574647847Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:01:27.574659487Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:01:27.574669338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:01:32.589550385Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:01:32.621778412Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:01:32.621865591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:01:32.64393314Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:01:32.643993625Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:01:32.644009581Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:01:32.644019544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:01:32.644027899Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:01:37.662292749Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:01:37.690019804Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:01:37.69013422Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:01:37.714401321Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:01:37.714441753Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:01:37.714455363Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:01:37.714490032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:01:37.714498885Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:01:42.733270341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:01:42.762731231Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:01:42.762845364Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:01:42.785224136Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:01:42.785277696Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:01:42.785292837Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:01:42.785303803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:01:42.785313155Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:01:47.803858272Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:01:47.834646813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:01:47.834767409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:01:47.856260192Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:01:47.856323458Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:01:47.856338628Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:01:47.856349Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:01:47.85635696Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:01:52.876089512Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:01:52.905740904Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:01:52.90595736Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:01:52.927861332Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:01:52.927916278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:01:52.927931599Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:01:52.9279418Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:01:52.927950628Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:01:57.946364482Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:01:57.977835604Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:01:57.977931481Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:01:58.003686527Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:01:58.003735079Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:01:58.003749099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:01:58.003762277Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:01:58.003771851Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:02:03.025411486Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:02:03.054100095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:02:03.054205223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:02:03.076039688Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:02:03.07608526Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:02:03.076098918Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:02:03.076134315Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:02:03.076144047Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:02:08.092298002Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:02:08.124004165Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:02:08.124100025Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:02:08.145847376Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:02:08.145891419Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:02:08.14590565Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:02:08.145916393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:02:08.145924451Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:02:13.162042743Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:02:13.191998426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:02:13.192089251Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:02:13.212871026Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:02:13.213009862Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:02:13.213024301Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:02:13.213032413Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:02:13.213039354Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:02:18.233382841Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:02:18.26483984Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:02:18.264931715Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:02:18.288922429Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:02:18.288965223Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:02:18.288979666Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:02:18.288991647Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:02:18.289000467Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:02:23.311300269Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:02:23.340018435Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:02:23.34013143Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:02:23.36509243Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:02:23.365134979Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:02:23.365148116Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:02:23.36517219Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:02:23.365181606Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:02:28.38081982Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:02:28.413419536Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:02:28.413523299Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:02:28.437035372Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:02:28.437082868Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:02:28.437099185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:02:28.43711712Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:02:28.43712455Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:02:33.451166834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:02:33.479934015Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:02:33.480050442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:02:33.5008351Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:02:33.500895677Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:02:33.500910652Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:02:33.500920233Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:02:33.500928303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:02:38.518617537Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:02:38.54732385Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:02:38.547437534Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:02:38.57281933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:02:38.572861953Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:02:38.572875414Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:02:38.572887483Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:02:38.572898279Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:02:43.592883731Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:02:43.623096604Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:02:43.623185206Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:02:43.647526279Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:02:43.647583077Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:02:43.647597466Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:02:43.64760711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:02:43.647615033Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:02:48.668264261Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:02:48.697598002Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:02:48.697686085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:02:48.721512957Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:02:48.721555987Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:02:48.721571529Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:02:53.741965774Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:02:53.771333092Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:02:53.771457544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:02:53.795727723Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:02:53.795771055Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:02:53.795784184Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:02:53.795802245Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:02:53.795812038Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:02:58.813897182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:02:58.840166571Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:02:58.840272665Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:02:58.862755018Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:02:58.862800765Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:02:58.86283327Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:02:58.862867508Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:02:58.862876411Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:03:03.879587989Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:03:03.910591498Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:03:03.910687548Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:03:03.93429149Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:03:03.934332842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:03:03.934346451Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:03:03.934356771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:03:03.934365689Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:03:08.952273495Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:03:08.979770117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:03:08.979890829Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:03:09.001037336Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:03:09.001082061Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:03:09.00109768Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:03:09.001110561Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:03:09.0011204Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:03:14.016394651Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:03:14.048015736Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:03:14.048107054Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:03:14.068176827Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:03:14.068220778Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:03:14.068248573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:03:14.068276082Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:03:14.068285725Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:03:19.083525561Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:03:19.114690979Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:03:19.114780144Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:03:19.135911169Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:03:19.135951736Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:03:19.135965051Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:03:19.135983239Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:03:19.13599166Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:03:24.150372006Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:03:24.179587031Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:03:24.17967803Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:03:24.202925616Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:03:24.202969608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:03:24.202982583Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:03:24.203014771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:03:24.203024686Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:03:29.21727819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:03:29.247426128Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:03:29.247565337Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:03:29.26861924Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:03:29.268660429Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:03:29.268673638Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:03:29.268684886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:03:29.268694819Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:03:34.285366292Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:03:34.315253574Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:03:34.31536838Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:03:34.338125977Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:03:34.338167688Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:03:34.338180958Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:03:39.3533024Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:03:39.380400432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:03:39.380713828Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:03:39.404877886Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:03:39.404923582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:03:39.404939514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:03:39.404952843Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:03:39.404963216Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:03:44.424291696Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:03:44.452913085Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:03:44.453029978Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:03:44.477257843Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:03:44.477300586Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:03:44.477313335Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:03:44.477325784Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:03:44.477335194Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:03:49.497938506Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:03:49.529806977Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:03:49.529910798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:03:49.558178161Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:03:49.558220872Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:03:49.558245804Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:03:49.558258004Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:03:49.558275969Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:03:54.575539184Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:03:54.605369203Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:03:54.605462911Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:03:54.628018046Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:03:54.628063642Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:03:54.62807751Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:03:54.62808893Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:03:54.628097762Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:03:59.648158229Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:03:59.677216813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:03:59.677750683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:03:59.699191849Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:03:59.69924889Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:03:59.699265159Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:03:59.699278162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:03:59.699289113Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:04:04.71637385Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:04:04.745808574Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:04:04.745918077Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:04:04.767258846Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:04:04.767303463Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:04:04.767319348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:04:04.767331467Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:04:04.767341415Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:04:09.785279916Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:04:09.814198377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:04:09.81431735Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:04:09.834356333Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:04:09.834403865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:04:09.834438068Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:04:09.834451194Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:04:09.834461655Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:04:14.851554199Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:04:14.8840339Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:04:14.88414905Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:04:14.90306129Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:04:14.903103267Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:04:14.903116444Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:04:14.903127968Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:04:14.903136702Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:04:19.9233918Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:04:19.951595208Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:04:19.951700969Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:04:19.975997336Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:04:19.976043888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:04:19.976057533Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:04:19.976068614Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:04:19.976077137Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:04:24.99336477Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:04:25.024403114Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:04:25.024579012Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:04:25.046592185Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:04:25.046633152Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:04:25.04664831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:04:25.046660116Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:04:25.046668599Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:04:30.063752205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:04:30.09536529Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:04:30.095461326Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:04:30.12077903Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:04:30.120824459Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:04:30.120837982Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:04:30.120848168Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:04:30.120856294Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:04:35.138739641Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:04:35.1688397Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:04:35.168960075Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:04:35.190308629Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:04:35.19034929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:04:35.190363226Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:04:35.190375522Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:04:35.190385252Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:04:40.206287914Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:04:40.236885068Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:04:40.237001117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:04:40.260940785Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:04:40.26098405Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:04:40.260999712Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:04:40.261031822Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:04:40.261043022Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:04:45.279038339Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:04:45.310939496Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:04:45.311030659Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:04:45.331539103Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:04:45.331586658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:04:45.331603083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:04:45.331614337Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:04:45.331624132Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:04:50.355832596Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:04:50.381887868Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:04:50.381985404Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:04:50.407810534Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:04:50.407844785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:04:50.407858274Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:04:50.407868245Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:04:50.407876646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:04:55.42614122Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:04:55.454569294Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:04:55.454665372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:04:55.47860123Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:04:55.478645313Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:04:55.478659305Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:04:55.47867153Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:04:55.478679814Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:05:00.494450948Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:05:00.523426406Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:05:00.523525463Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:05:00.54689397Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:05:00.546941019Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:05:00.546955453Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:05:00.546980888Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:05:00.546989985Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:05:05.564292638Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:05:05.59357001Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:05:05.593663568Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:05:05.617696925Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:05:05.617739167Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:05:05.617751735Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:05:05.617763138Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:05:05.617772696Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:05:10.634613552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:05:10.664922755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:05:10.665016801Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:05:10.689814585Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:05:10.689877497Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:05:10.689901723Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:05:10.689911692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:05:10.689919979Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:05:15.70972238Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:05:15.740063813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:05:15.740162646Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:05:15.764690904Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:05:15.764738728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:05:15.764752998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:05:15.764764783Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:05:15.76477503Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:05:20.785543139Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:05:20.81601803Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:05:20.816143984Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:05:20.838478392Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:05:20.838525614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:05:20.838538904Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:05:20.838584888Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:05:20.838593996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:05:25.855142082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:05:25.886183457Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:05:25.886341946Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:05:25.907808535Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:05:25.907855818Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:05:25.907870646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:05:25.907882358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:05:25.907892665Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:05:30.924530137Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:05:30.952271225Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:05:30.952360353Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:05:30.973566894Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:05:30.973623288Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:05:35.988135386Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:05:36.01971029Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:05:36.019825873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:05:36.042103052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:05:36.042162756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:05:36.042177271Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:05:36.042188067Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:05:36.042196512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:05:41.065268964Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:05:41.092824893Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:05:41.092920634Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:05:41.116078817Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:05:41.116125841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:05:41.116140635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:05:41.116151412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:05:41.116160814Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:05:46.135925317Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:05:46.164776397Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:05:46.164889925Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:05:46.191893669Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:05:46.191950176Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:05:46.191964979Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:05:46.191973752Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:05:46.191982039Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:05:51.21228404Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:05:51.245398886Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:05:51.24549771Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:05:51.266608546Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:05:51.266657178Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:05:51.266673384Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:05:51.266683889Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:05:51.266691435Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:05:56.285296483Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:05:56.314029275Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:05:56.314145843Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:05:56.337072745Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:05:56.337116382Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:05:56.337131496Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:05:56.337143813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:05:56.337153556Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:06:01.367102883Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:06:01.424934346Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:06:01.425076987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:06:01.457010833Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:06:01.457058808Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:06:01.457099435Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:06:01.457111642Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:06:01.4571216Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:06:06.474201265Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:06:06.51232628Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:06:06.51241945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:06:06.53632501Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:06:06.536366103Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:06:06.536381132Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:06:06.53639358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:06:06.536403551Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:06:11.557293675Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:06:11.585651839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:06:11.585781892Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:06:11.606579061Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:06:11.606623259Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:06:11.60663723Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:06:11.606648437Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:06:11.606657159Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:06:16.6256981Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:06:16.656618947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:06:16.656733155Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:06:16.680293059Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:06:16.680334833Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:06:16.68034851Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:06:16.680360077Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:06:16.68037Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:06:21.702130919Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:06:21.730634262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:06:21.731124877Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:06:21.754351921Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:06:21.75439196Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:06:21.754405105Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:06:21.754416932Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:06:21.75442706Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:06:26.768507554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:06:26.796000951Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:06:26.796090097Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:06:26.817145034Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:06:26.817199669Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:06:26.817213571Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:06:26.817223798Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:06:26.817232377Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:06:31.836747033Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:06:31.864211021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:06:31.864333478Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:06:31.88629028Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:06:31.886331128Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:06:31.886345319Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:06:31.886378978Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:06:31.886387705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:06:36.902288434Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:06:36.932103733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:06:36.932193584Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:06:36.955404821Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:06:36.95545691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:06:36.955473283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:06:36.955483723Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:06:36.955492373Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:06:41.981286785Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:06:42.009998032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:06:42.010107961Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:06:42.036196678Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:06:42.036252464Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:06:42.036268304Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:06:42.036279107Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:06:42.036287725Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:06:47.055333197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:06:47.084376026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:06:47.084603775Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:06:47.104730672Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:06:47.104774433Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:06:47.104789292Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:06:47.104801258Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:06:47.10481098Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:06:52.126174243Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:06:52.155333117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:06:52.155460297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:06:52.177100659Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:06:52.177144753Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:06:52.177158965Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:06:52.177169902Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:06:52.177178443Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:06:57.192391104Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:06:57.220027955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:06:57.220121547Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:06:57.241537779Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:06:57.241590356Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:06:57.241605131Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:06:57.241617772Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:06:57.241626732Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:07:02.263205488Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:07:02.295416623Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:07:02.295556017Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:07:02.342548307Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:07:02.342594925Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:07:02.342608666Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:07:02.342620928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:07:02.342630011Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:07:07.3576255Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:07:07.389209344Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:07:07.389338688Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:07:07.413186244Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:07:07.413249991Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:07:07.413264688Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:07:07.413294686Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:07:07.413314704Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:07:12.432228053Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:07:12.461986547Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:07:12.462100936Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:07:12.484427765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:07:12.484540622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:07:12.484556494Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:07:12.484567747Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:07:12.484575794Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:07:17.504679981Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:07:17.534503492Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:07:17.534593865Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:07:17.55682196Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:07:17.556881398Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:07:17.556897205Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:07:17.556907125Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:07:17.556915558Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:07:22.576281409Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:07:22.606330066Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:07:22.606493957Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:07:22.630157099Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:07:22.630205183Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:07:22.63021927Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:07:22.630258867Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:07:22.630268054Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:07:27.64608197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:07:27.675436805Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:07:27.675531645Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:07:27.698720536Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:07:27.698781187Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:07:27.69879517Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:07:27.698806147Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:07:27.698814499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:07:32.716431297Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:07:32.743574469Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:07:32.74366848Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:07:32.763304802Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:07:32.763347534Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:07:32.763361713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:07:32.76337425Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:07:32.763383537Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:07:37.779547929Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:07:37.809762361Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:07:37.809879307Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:07:37.832230394Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:07:37.832299206Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:07:42.849288047Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:07:42.876100325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:07:42.876190331Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:07:42.900420119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:07:42.900562755Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:07:42.900578059Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:07:42.900589134Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:07:42.900598028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:07:47.917623178Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:07:47.945961519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:07:47.946078826Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:07:47.970667144Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:07:47.970708953Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:07:52.991965751Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:07:53.018948101Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:07:53.019140368Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:07:53.043696398Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:07:53.043738035Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:07:53.043753788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:07:53.043765523Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:07:53.043775072Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:07:58.059432358Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:07:58.086976278Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:07:58.087082769Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:07:58.109551926Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:07:58.109597605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:07:58.109613856Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:07:58.109625328Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:07:58.10963528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:08:03.129414271Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:08:03.157594457Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:08:03.1577039Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:08:03.181492024Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:08:03.181560338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:08:03.181576032Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:08:03.18159481Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:08:03.181603883Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:08:08.198283774Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:08:08.226989116Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:08:08.227081429Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:08:08.250109407Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:08:08.250181663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:08:08.250197022Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:08:08.250207601Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:08:08.250225701Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:08:13.268902794Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:08:13.298627959Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:08:13.298735165Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:08:13.32282806Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:08:13.322878934Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:08:13.322894936Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:08:13.322918094Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:08:13.322927022Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:08:18.344307397Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:08:18.37750527Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:08:18.377617431Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:08:18.401815623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:08:18.401859503Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:08:18.401875817Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:08:18.401910444Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:08:18.40192157Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:08:23.420458643Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:08:23.447194694Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:08:23.447324671Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:08:23.470814065Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:08:23.470867975Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:08:23.470883167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:08:23.470893663Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:08:23.470902087Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:08:28.490181156Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:08:28.519409563Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:08:28.519529177Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:08:28.542796458Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:08:28.542849013Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:08:28.542864336Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:08:28.542918775Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:08:28.542929016Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:08:33.56526923Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:08:33.594971048Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:08:33.595090074Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:08:33.614947773Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:08:33.614988425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:08:33.615002153Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:08:33.615035535Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:08:33.615044937Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:08:38.632136058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:08:38.660758244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:08:38.660847668Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:08:38.684641776Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:08:38.68470382Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:08:38.684720248Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:08:38.684731921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:08:38.684755673Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:08:43.704771889Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:08:43.736743973Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:08:43.736832217Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:08:43.757530918Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:08:43.757572228Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:08:43.757602993Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:08:43.757613945Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:08:43.757622882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:08:48.779323245Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:08:48.810933561Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:08:48.811023547Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:08:48.837600035Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:08:48.837641675Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:08:48.837655096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:08:48.837667716Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:08:48.83767726Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:08:53.852551213Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:08:53.881427521Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:08:53.881535356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:08:53.908800378Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:08:53.908845056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:08:53.908859524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:08:53.908871169Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:08:53.908881203Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:08:58.927445717Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:08:58.957490003Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:08:58.957580833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:08:58.979133122Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:08:58.979179943Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:08:58.979194965Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:08:58.97920551Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:09:03.993386378Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:09:04.024089258Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:09:04.024211706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:09:04.050173687Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:09:04.050216769Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:09:04.050231718Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:09:04.050254067Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:09:04.050262766Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:09:09.066996824Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:09:09.095604944Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:09:09.095712557Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:09:09.119805467Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:09:09.11985299Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:09:09.119867003Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:09:09.119879986Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:09:09.119889596Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:09:14.139161827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:09:14.167671138Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:09:14.167779497Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:09:14.189862262Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:09:14.189904204Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:09:14.189917208Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:09:14.189927843Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:09:14.189936675Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:09:19.206456615Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:09:19.235646747Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:09:19.235759253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:09:19.25857997Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:09:19.258620895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:09:19.258635636Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:09:19.258648361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:09:19.258657996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:09:24.273770165Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:09:24.303774102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:09:24.303886061Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:09:24.325065103Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:09:24.325109933Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:09:24.325124219Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:09:24.325136457Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:09:24.325146307Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:09:29.341135685Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:09:29.370957729Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:09:29.371069081Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:09:29.394056785Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:09:29.394099902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:09:29.394113273Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:09:29.394124833Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:09:34.406157714Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:09:34.433921845Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:09:34.436322532Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:09:34.461304877Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:09:34.461345868Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:09:34.461362069Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:09:34.461372952Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:09:34.461381847Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:09:39.479297572Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:09:39.510287383Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:09:39.510376452Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:09:39.534505084Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:09:39.534547452Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:09:39.534561531Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:09:39.534572971Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:09:39.534582373Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:09:44.550303877Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:09:44.578891221Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:09:44.578979103Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:09:44.598208984Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:09:44.598263807Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:09:44.598279449Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:09:44.598289819Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:09:44.598297874Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:09:49.617092442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:09:49.647980086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:09:49.648078854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:09:49.669797627Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:09:49.669840072Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:09:49.669855454Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:09:49.669866696Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:09:49.669877895Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:09:54.686043239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:09:54.716139088Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:09:54.716269511Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:09:54.741135389Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:09:54.741176824Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:09:54.74122109Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:09:54.74124413Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:09:54.741252932Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:09:59.760280337Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:09:59.788590671Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:09:59.788680308Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:09:59.815095283Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:09:59.815137624Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:09:59.815151013Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:09:59.815163247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:09:59.815172822Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:10:04.841073079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:10:04.88074142Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:10:04.880895229Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:10:04.906793287Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:10:04.906855224Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:10:04.906871851Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:10:04.906882973Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:10:04.906892344Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:10:09.926150196Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:10:09.954808842Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:10:09.954899404Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:10:09.97765861Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:10:09.977713124Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:10:09.977728836Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:10:09.977739557Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:10:09.977746829Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:10:14.995463904Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:10:15.031803591Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:10:15.031923765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:10:15.054054774Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:10:15.054099837Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:10:15.054116578Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:10:15.054128028Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:10:15.054137864Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:10:20.071287201Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:10:20.099323077Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:10:20.099443757Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:10:20.12118669Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:10:20.121265042Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:10:20.121280585Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:10:20.121330976Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:10:20.1213407Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:10:25.141072952Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:10:25.169640822Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:10:25.169733265Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:10:25.190372802Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:10:25.19041428Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:10:25.190427814Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:10:25.190439354Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:10:25.19044957Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:10:30.20831211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:10:30.237051991Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:10:30.237187388Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:10:30.257838019Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:10:30.257880361Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:10:30.257894902Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:10:30.257907059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:10:30.257915907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:10:35.278280185Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:10:35.308122561Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:10:35.308251329Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:10:35.338582449Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:10:35.338622558Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:10:35.338660877Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:10:35.338671317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:10:35.338679584Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:10:40.353425056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:10:40.385206986Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:10:40.385330802Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:10:40.410035308Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:10:40.410076472Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:10:40.410091213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:10:40.41010331Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:10:40.410112511Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:10:45.429785313Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:10:45.458330918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:10:45.458434409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:10:45.479841583Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:10:50.50231357Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:10:50.530574684Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:10:50.530678864Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:10:50.550461386Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:10:50.550507378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:10:50.550521893Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:10:50.550533556Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:10:50.55054344Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:10:55.568637262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:10:55.599493421Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:10:55.599606246Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:10:55.62512615Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:10:55.625166901Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:10:55.625180503Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:10:55.62519204Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:10:55.625201477Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:11:00.643199074Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:11:00.672116717Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:11:00.672218121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:11:00.696743084Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:11:00.696799056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:11:00.696812991Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:11:00.696823517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:11:00.69683185Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:11:05.713289823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:11:05.742183275Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:11:05.742297174Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:11:05.766807188Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:11:05.766848512Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:11:05.766880938Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:11:05.766891469Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:11:05.766899698Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:11:10.787286166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:11:10.817333366Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:11:10.817456494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:11:10.837936119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:11:10.83799109Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:11:10.838005283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:11:10.838015141Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:11:10.838023261Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:11:15.85298101Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:11:15.882556329Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:11:15.882646727Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:11:15.905466865Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:11:15.905508752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:11:15.905522179Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:11:15.90553506Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:11:15.905545783Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:11:20.926273034Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:11:20.956564919Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:11:20.956672856Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:11:20.978081486Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:11:20.978138908Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:11:20.978154231Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:11:20.978163809Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:11:20.978171719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:11:25.996305624Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:11:26.02522014Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:11:26.025334084Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:11:26.053390348Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:11:26.053433787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:11:26.053448583Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:11:26.053458678Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:11:26.053468163Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:11:31.07170048Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:11:31.099865123Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:11:31.100007288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:11:31.124602753Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:11:31.12464592Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:11:31.124660679Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:11:31.124674114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:11:31.124683164Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:11:36.140780648Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:11:36.172369336Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:11:36.172592317Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:11:36.197381789Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:11:36.197455256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:11:36.197470273Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:11:36.19751881Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:11:36.197527745Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:11:41.216142778Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:11:41.243857409Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:11:41.244054475Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:11:41.267265085Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:11:41.267311187Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:11:41.26732497Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:11:41.267335334Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:11:41.26734544Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:11:46.282393529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:11:46.312930681Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:11:46.313365919Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:11:46.337269209Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:11:46.337311392Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:11:46.337327587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:11:46.337339236Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:11:46.337348492Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:11:51.356755568Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:11:51.387952932Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:11:51.388054581Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:11:51.412944657Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:11:51.412990812Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:11:51.413025499Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:11:51.413058549Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:11:51.413067419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:11:56.429782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:11:56.458854241Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:11:56.458978088Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:11:56.486134277Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:11:56.486532375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:11:56.486554452Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:11:56.486568555Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:11:56.48657993Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:12:01.526862448Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:12:01.610026232Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:12:01.610167395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:12:01.663259292Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:12:01.663317824Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:12:01.66335526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:12:01.663366182Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:12:01.663374113Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:12:06.692765663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:12:06.721052413Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:12:06.72115511Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:12:06.741110948Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:12:06.741292474Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:12:06.741312501Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:12:06.741324247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:12:06.741333748Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:12:11.761538239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:12:11.792396128Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:12:11.792595436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:12:11.816843757Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:12:11.816886009Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:12:11.816899225Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:12:11.816922469Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:12:11.816931536Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:12:16.832712324Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:12:16.863663704Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:12:16.863798064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:12:16.888376795Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:12:16.888415986Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:12:16.888557806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:12:16.888571057Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:12:16.888580745Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:12:21.908780794Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:12:21.937526457Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:12:21.93764091Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:12:21.961356341Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:12:21.961398342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:12:21.961411938Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:12:21.961423849Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:12:21.961432981Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:12:26.977119615Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:12:27.005872802Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:12:27.005978397Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:12:27.031091256Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:12:27.03113349Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:12:27.031147086Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:12:27.031159426Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:12:27.031168643Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:12:32.050458787Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:12:32.079919881Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:12:32.080034814Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:12:32.106183369Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:12:32.106226643Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:12:32.1062533Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:12:32.106288652Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:12:32.106296893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:12:37.124776143Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:12:37.153381708Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:12:37.153497463Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:12:37.177157434Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:12:37.177225435Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:12:37.177255082Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:12:37.177276244Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:12:37.177286228Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:12:42.19829421Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:12:42.255056994Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:12:42.255171928Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:12:42.277367599Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:12:42.277441723Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:12:42.277458501Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:12:42.277469791Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:12:42.277478479Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:12:47.299573276Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:12:47.325222928Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:12:47.325336659Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:12:47.348210821Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:12:47.348268127Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:12:47.348282706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:12:47.348294562Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:12:47.348304996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:12:52.368110074Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:12:52.398326554Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:12:52.398435904Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:12:52.417922202Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:12:52.41796516Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:12:52.417978005Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:12:52.41798926Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:12:52.417999246Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:12:57.434868108Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:12:57.461346461Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:12:57.461471632Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:12:57.48431019Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:12:57.484351076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:12:57.484365296Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:12:57.48437746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:12:57.484387075Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:13:02.505655104Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:13:02.534967376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:13:02.535120108Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:13:02.555408156Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:13:02.55546483Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:13:02.555479403Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:13:02.555550917Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:13:02.555560313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:13:07.57386445Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:13:07.603093573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:13:07.603202291Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:13:07.625520908Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:13:07.625564834Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:13:07.625579784Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:13:07.625589448Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:13:07.625598084Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:13:12.643176945Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:13:12.672167475Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:13:12.672272166Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:13:12.696413933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:13:12.696580052Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:13:12.696599604Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:13:12.696611243Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:13:12.696620737Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:13:17.711478603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:13:17.74156876Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:13:17.741665136Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:13:17.763762657Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:13:17.763842499Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:13:17.763858163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:13:17.763869423Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:13:17.763878183Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:13:22.786291208Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:13:22.815762547Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:13:22.815877888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:13:22.837711608Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:13:22.837757222Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:13:22.837773805Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:13:22.83778578Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:13:22.837796069Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:13:27.858284791Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:13:27.890096722Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:13:27.890220096Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:13:27.913895707Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:13:27.913947264Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:13:27.913961055Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:13:27.913972378Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:13:27.913982504Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:13:32.934644065Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:13:32.971802678Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:13:32.971925931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:13:32.995511575Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:13:32.995552408Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:13:32.995565791Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:13:32.995578315Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:13:32.995588398Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:13:38.017184035Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:13:38.05012488Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:13:38.050259179Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:13:38.072919485Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:13:38.073329398Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:13:38.073351763Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:13:38.073365325Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:13:38.073376556Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:13:43.090432318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:13:43.119256295Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:13:43.119370637Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:13:43.142576116Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:13:43.142617679Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:13:43.142630807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:13:43.142641795Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:13:43.142652736Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:13:48.160941752Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:13:48.190145073Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:13:48.190261426Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:13:48.215493367Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:13:48.215541293Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:13:48.215566815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:13:48.215579643Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:13:48.215589396Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:13:53.23430581Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:13:53.264820063Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:13:53.264921485Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:13:53.288660917Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:13:53.288720789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:13:53.28873702Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:13:53.28874749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:13:53.28875639Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:13:58.308624712Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:13:58.337297993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:13:58.337433799Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:13:58.363137326Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:13:58.363190743Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:13:58.363204688Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:13:58.363216343Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:13:58.363226313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:14:03.382645656Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:14:03.412335083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:14:03.412677984Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:14:03.43441449Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:14:03.434461689Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:14:03.434476335Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:14:03.434486663Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:14:03.434496252Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:14:08.453309528Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:14:08.485455541Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:14:08.485545916Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:14:08.512786921Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:14:08.512832971Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:14:08.512847622Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:14:08.512883764Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:14:08.512893153Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:14:13.529669451Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:14:13.560392081Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:14:13.560573033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:14:13.583637716Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:14:13.58368056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:14:13.58369438Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:14:13.583705513Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:14:13.583715349Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:14:18.606792495Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:14:18.63672581Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:14:18.636831166Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:14:18.662144874Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:14:18.662187719Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:14:18.662200723Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:14:18.662212539Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:14:23.678856956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:14:23.710281532Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:14:23.710387809Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:14:23.734864275Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:14:23.734903328Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:14:23.734920322Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:14:23.734931234Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:14:23.734941322Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:14:28.755187189Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:14:28.785658555Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:14:28.78577269Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:14:28.810114187Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:14:28.810156102Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:14:28.810171516Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:14:28.8101833Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:14:28.810192248Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:14:33.825307575Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:14:33.855997347Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:14:33.856084436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:14:33.879514288Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:14:33.879559529Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:14:33.87957299Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:14:33.879584306Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:14:33.879593052Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:14:38.89416702Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:14:38.924854802Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:14:38.924965996Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:14:38.948905852Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:14:38.948946742Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:14:38.948959621Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:14:38.949003632Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:14:38.949012605Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:14:43.965314471Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:14:43.994549744Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:14:43.994676138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:14:44.021183205Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:14:44.021223999Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:14:44.021250457Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:14:44.021269767Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:14:44.021278271Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:14:49.038307702Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:14:49.067961533Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:14:49.06807002Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:14:49.091711367Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:14:49.091754501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:14:49.091770425Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:14:49.091781127Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:14:49.091789929Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:14:54.10928914Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:14:54.138648705Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:14:54.138742889Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:14:54.163731561Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:14:54.163789896Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:14:54.163805482Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:14:54.163815518Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:14:54.163823971Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:14:59.182044537Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:14:59.212884978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:14:59.213011318Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:14:59.235782628Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:14:59.235827085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:14:59.235839883Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:14:59.235868456Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:14:59.235879294Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:15:04.252394658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:15:04.281267622Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:15:04.281400457Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:15:04.306164536Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:15:04.306210657Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:15:04.306225183Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:15:04.306245711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:15:04.306255928Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:15:09.330143391Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:15:09.356853984Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:15:09.356975484Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:15:09.381948567Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:15:09.381992057Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:15:09.382006167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:15:09.382015899Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:15:09.382026127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:15:14.398129984Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:15:14.427754925Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:15:14.427846708Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:15:14.450402614Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:15:14.45044998Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:15:14.450464322Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:15:14.450475931Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:15:14.450504943Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:15:19.470658939Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:15:19.499382065Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:15:19.499481084Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:15:19.523825293Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:15:19.523875811Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:15:19.523892557Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:15:19.523962546Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:15:19.523971857Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:15:24.535384302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:15:24.566426896Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:15:24.566555076Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:15:24.59018578Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:15:24.590260903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:15:24.590276663Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:15:24.590287108Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:15:24.590295632Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:15:29.610265068Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:15:29.639204331Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:15:29.639336775Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:15:29.666047729Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:15:29.666093369Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:15:29.6661067Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:15:29.666117499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:15:29.666126189Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:15:34.686620694Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:15:34.716268513Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:15:34.716358241Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:15:34.738364251Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:15:34.738409318Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:15:34.738422777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:15:34.738435013Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:15:34.738444062Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:15:39.755077001Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:15:39.786500574Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:15:39.78661361Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:15:39.809936988Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:15:39.809981125Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:15:39.809995641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:15:39.810006399Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:15:39.810014589Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:15:44.831261202Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:15:44.867682444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:15:44.867782786Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:15:44.890269444Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:15:44.890323869Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:15:44.890338757Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:15:44.890349807Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:15:44.890357943Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:15:49.91228988Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:15:49.942981219Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:15:49.943102377Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:15:49.969559061Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:15:49.96960491Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:15:49.96962107Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:15:49.969658194Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:15:49.969668476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:15:54.986283827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:15:55.015081551Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:15:55.015170726Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:15:55.038820683Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:15:55.038874502Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:15:55.038890366Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:15:55.038900565Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:15:55.038909119Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:16:00.077994022Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:16:00.120246929Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:16:00.120363984Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:16:00.146324934Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:16:00.146372801Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:16:00.146386489Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:16:00.146433145Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:16:00.146441925Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:16:05.163302912Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:16:05.191743617Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:16:05.191857907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:16:05.213087008Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:16:05.213129466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:16:05.213144013Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:16:05.213156656Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:16:05.213165469Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:16:10.225163546Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:16:10.260929492Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:16:10.26105674Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:16:10.286330254Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:16:10.286375294Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:16:10.286389992Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:16:10.286402393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:16:10.286412317Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:16:15.30217698Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:16:15.331781551Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:16:15.33189427Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:16:15.352160328Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:16:15.35220634Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:16:15.352221321Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:16:15.352244447Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:16:15.352253768Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:16:20.37104462Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:16:20.401568896Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:16:20.401697669Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:16:20.424050248Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:16:20.424089949Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:16:20.424104077Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:16:20.424115548Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:16:20.424124573Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:16:25.44126821Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:16:25.467668865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:16:25.46777633Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:16:25.488100377Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:16:25.488142875Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:16:25.488156475Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:16:25.488168335Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:16:25.48817779Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:16:30.510185986Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:16:30.54660146Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:16:30.546742599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:16:30.567623787Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:16:30.567667451Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:16:30.567683618Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:16:30.567695121Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:16:30.567704904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:16:35.581211138Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:16:35.612115469Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:16:35.612224898Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:16:35.632516389Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:16:35.632567174Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:16:35.632606264Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:16:35.632616627Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:16:35.632625741Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:16:40.649183595Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:16:40.678528935Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:16:40.678624018Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:16:40.702375485Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:16:40.702420429Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:16:40.702433879Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:16:40.702444986Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:16:40.702453977Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:16:45.716844134Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:16:45.746306241Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:16:45.746415194Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:16:45.768182713Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:16:45.768226528Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:16:45.768250762Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:16:45.768262322Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:16:45.768270382Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:16:50.789291599Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:16:50.818599127Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:16:50.818691192Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:16:50.843716064Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:16:50.843756501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:16:50.84378848Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:16:50.843800048Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:16:50.84380835Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:16:55.860944637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:16:55.889443582Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:16:55.88953843Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:16:55.913069085Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:16:55.913112795Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:16:55.913126154Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:16:55.913137603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:16:55.913147542Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:17:00.932655489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:17:00.963080277Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:17:00.963196925Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:17:00.986371616Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:17:00.986426012Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:17:00.986441354Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:17:00.986451638Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:17:00.986459872Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:17:06.001506437Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:17:06.030932566Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:17:06.03106992Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:17:06.05486001Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:17:06.054902362Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:17:06.054916588Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:17:06.054926941Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:17:06.054936135Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:17:11.071619819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:17:11.101505026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:17:11.101616184Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:17:11.125745586Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:17:11.125784841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:17:11.125799418Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:17:11.12581047Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:17:11.125819441Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:17:16.143634212Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:17:16.172365336Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:17:16.172564822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:17:16.193411298Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:17:16.193454203Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:17:16.19346811Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:17:16.193480298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:17:16.193489767Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:17:21.209797917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:17:21.239384648Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:17:21.23951409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:17:21.260945946Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:17:21.260998465Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:17:21.261015577Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:17:21.261027077Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:17:21.261035278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:17:26.279895107Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:17:26.309890165Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:17:26.309977886Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:17:26.330525846Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:17:26.330570498Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:17:26.330610708Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:17:26.330621733Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:17:26.33062973Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:17:31.350194474Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:17:31.378352506Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:17:31.378471223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:17:31.400841335Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:17:31.400888298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:17:31.400901521Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:17:31.400913049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:17:31.40092167Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:17:36.417095375Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:17:36.447759495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:17:36.447866204Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:17:36.468181147Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:17:36.468221238Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:17:36.468245953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:17:36.468256601Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:17:36.468265278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:17:41.489824099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:17:41.518447859Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:17:41.518541014Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:17:41.538760294Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:17:41.538822485Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:17:41.538837327Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:17:41.538848616Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:17:41.538856775Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:17:46.556104753Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:17:46.588307117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:17:46.58841722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:17:46.60868675Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:17:46.608729415Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:17:46.608745124Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:17:46.608781274Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:17:46.608790638Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:17:51.630295404Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:17:51.659226089Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:17:51.659353582Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:17:51.684158505Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:17:51.684206517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:17:51.684220411Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:17:51.68423098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:17:51.6842519Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:17:56.698586674Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:17:56.729594019Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:17:56.729697989Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:17:56.753067644Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:17:56.75312768Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:17:56.75314264Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:17:56.753152513Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:17:56.753186071Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:18:01.795087533Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:18:01.896364124Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:18:01.896599945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:18:01.972937971Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:18:01.972986089Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:18:01.973001668Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:18:01.973013856Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:18:01.973023465Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:18:06.992136589Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:18:07.021883198Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:18:07.021980591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:18:07.044648786Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:18:07.044704611Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:18:07.044719439Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:18:07.044730202Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:18:07.044738412Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:18:12.069273233Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:18:12.098970676Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:18:12.099074161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:18:12.122260458Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:18:12.122306264Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:18:12.122320538Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:18:12.12236121Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:18:12.122369976Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:18:17.138762044Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:18:17.170018354Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:18:17.170116299Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:18:17.192670523Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:18:17.192716225Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:18:17.192742933Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:18:17.19275503Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:18:17.192764032Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:18:22.212288152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:18:22.242031597Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:18:22.242124096Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:18:22.270072265Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:18:22.270115524Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:18:22.270129319Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:18:22.270141114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:18:22.270149948Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:18:27.287668293Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:18:27.317350265Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:18:27.317487366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:18:27.342001676Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:18:27.342044973Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:18:27.34205803Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:18:27.342070945Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:18:27.342080186Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:18:32.359584412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:18:32.389618693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:18:32.389743649Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:18:32.414863794Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:18:32.414905865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:18:32.414920201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:18:32.414931577Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:18:32.414941221Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:18:37.432198807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:18:37.460861451Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:18:37.460961607Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:18:37.482018419Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:18:37.482061681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:18:37.482075647Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:18:42.502284826Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:18:42.532213203Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:18:42.532336245Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:18:42.555054398Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:18:42.55509395Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:18:42.555106955Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:18:42.555118479Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:18:42.555128131Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:18:47.571287993Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:18:47.600938677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:18:47.601032479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:18:47.621685315Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:18:47.621736081Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:18:47.621752831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:18:47.62177157Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:18:47.62184235Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:18:52.639826159Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:18:52.669577725Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:18:52.669692615Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:18:52.691787856Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:18:52.691829458Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:18:52.691842051Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:18:52.69185337Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:18:52.69186629Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:18:57.708548307Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:18:57.739176105Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:18:57.739285087Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:18:57.76466008Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:18:57.764716873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:18:57.764732018Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:18:57.764743707Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:18:57.764752299Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:19:02.789102762Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:19:02.81971262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:19:02.819805807Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:19:02.844319265Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:19:02.844359173Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:19:02.844372579Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:19:02.84438261Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:19:02.844391207Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:19:07.859305403Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:19:07.889002813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:19:07.889099552Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:19:07.913691297Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:19:07.91375265Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:19:07.913767687Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:19:07.913778751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:19:07.91378797Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:19:12.935892367Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:19:12.965150356Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:19:12.965290905Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:19:12.986594225Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:19:12.986636622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:19:12.986649701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:19:12.98666155Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:19:12.986671307Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:19:18.005702027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:19:18.036156108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:19:18.036272567Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:19:18.057697268Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:19:18.057743212Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:19:18.057757723Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:19:18.057779782Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:19:18.057789114Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:19:23.077434744Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:19:23.110565154Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:19:23.110684915Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:19:23.138330831Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:19:23.138373978Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:19:23.138388361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:19:23.138398951Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:19:23.138407979Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:19:28.155217761Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:19:28.184611767Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:19:28.184727531Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:19:28.208705594Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:19:28.208748466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:19:28.208763928Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:19:28.208777301Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:19:28.208786151Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:19:33.225199666Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:19:33.257022193Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:19:33.257150296Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:19:33.282049125Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:19:33.282101905Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:19:33.282116273Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:19:33.282128424Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:19:33.282137453Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:19:38.300647309Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:19:38.32829837Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:19:38.328397301Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:19:38.350722065Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:19:38.350765752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:19:38.350779669Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:19:38.350791763Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:19:38.350800028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:19:43.367004304Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:19:43.395151097Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:19:43.395279757Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:19:43.421419495Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:19:43.421466704Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:19:43.421480622Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:19:43.421493341Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:19:43.42150358Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:19:48.441464009Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:19:48.471842818Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:19:48.47195844Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:19:48.495355355Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:19:48.495416934Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:19:48.495431414Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:19:48.495441454Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:19:48.495449631Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:19:53.525686947Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:19:53.558177246Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:19:53.5582923Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:19:53.581119868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:19:53.581164757Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:19:53.581177626Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:19:53.581189016Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:19:53.581198624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:19:58.59844272Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:19:58.62826556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:19:58.628354315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:19:58.65155093Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:19:58.651597415Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:19:58.651613063Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:19:58.651623666Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:19:58.651631377Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:20:03.671040371Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:20:03.700375844Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:20:03.700659037Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:20:03.726540554Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:20:03.726583181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:20:03.726638914Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:20:03.72664989Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:20:03.726657906Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:20:08.748050385Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:20:08.776592367Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:20:08.776693739Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:20:08.799767933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:20:08.799814123Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:20:08.799828106Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:20:08.799840494Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:20:08.799850025Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:20:13.814316097Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:20:13.844833018Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:20:13.844943013Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:20:13.869068478Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:20:13.869110691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:20:13.869123566Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:20:13.869134363Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:20:13.869143982Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:20:18.890293767Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:20:18.919424295Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:20:18.919536488Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:20:18.938729958Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:20:18.938794501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:20:18.938810296Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:20:18.938820982Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:20:18.938830237Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:20:23.956288083Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:20:23.987130859Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:20:23.987262823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:20:24.014931156Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:20:24.014971152Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:20:24.014985112Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:20:24.014995979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:20:24.015005672Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:20:29.032300968Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:20:29.06179797Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:20:29.061900104Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:20:29.085542345Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:20:29.08558585Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:20:29.085600682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:20:29.085613942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:20:29.085623227Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:20:34.100754119Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:20:34.130065841Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:20:34.130183498Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:20:34.154296868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:20:34.154341035Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:20:34.154356272Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:20:34.154368049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:20:34.154377373Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:20:39.169632393Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:20:39.200362524Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:20:39.20056535Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:20:39.221728246Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:20:39.221785116Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:20:39.22181382Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:20:39.221824381Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:20:39.221833605Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:20:44.240707909Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:20:44.270171288Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:20:44.270353638Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:20:44.293385775Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:20:44.293436767Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:20:44.293450733Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:20:44.293462656Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:20:44.293473147Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:20:49.317281712Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:20:49.345707586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:20:49.34582181Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:20:49.370969569Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:20:49.371014236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:20:49.371027207Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:20:49.371039064Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:20:54.385808689Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:20:54.414874996Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:20:54.415343163Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:20:54.437550563Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:20:54.437598475Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:20:54.437612613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:20:54.437622364Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:20:54.437629447Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:20:59.455761234Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:20:59.484183192Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:20:59.484391931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:20:59.508643338Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:20:59.508689619Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:20:59.508703494Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:20:59.508714131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:20:59.508724884Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:21:04.524854801Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:21:04.553521833Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:21:04.553617747Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:21:04.573542023Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:21:04.573597671Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:21:04.573612795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:21:04.573623836Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:21:04.573631808Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:21:09.592164068Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:21:09.622177043Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:21:09.622289544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:21:09.645464044Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:21:09.645525236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:21:09.645539247Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:21:09.645549826Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:21:09.645558122Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:21:14.659657338Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:21:14.687612181Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:21:14.687742927Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:21:14.711348377Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:21:14.711394566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:21:14.711409053Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:21:14.711442272Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:21:14.711454249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:21:19.730620582Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:21:19.761201416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:21:19.761345029Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:21:19.785256152Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:21:19.785302021Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:21:19.785315455Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:21:19.785325337Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:21:19.785334727Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:21:24.802995782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:21:24.829989986Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:21:24.830114266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:21:24.851222377Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:21:24.851279397Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:21:24.851293878Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:21:24.851303865Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:21:24.851312941Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:21:29.870281785Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:21:29.898597891Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:21:29.898721044Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:21:29.922710256Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:21:29.922758522Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:21:29.922785142Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:21:29.922796828Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:21:29.922807128Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:21:34.938697869Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:21:34.969759665Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:21:34.969862254Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:21:34.996888927Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:21:34.99693213Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:21:34.996957521Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:21:34.996968671Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:21:34.996976915Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:21:40.014627986Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:21:40.045712772Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:21:40.045829611Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:21:40.070784641Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:21:40.070825313Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:21:40.070838758Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:21:40.070850699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:21:40.070872325Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:21:45.086691919Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:21:45.116639738Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:21:45.116751711Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:21:45.141433424Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:21:45.141479486Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:21:45.141495123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:21:45.14150664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:21:45.141516319Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:21:50.16470464Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:21:50.194317741Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:21:50.194412967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:21:50.216054405Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:21:50.216115617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:21:50.216130547Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:21:50.216140634Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:21:50.216149127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:21:55.235551141Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:21:55.264689058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:21:55.264786395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:21:55.291665796Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:21:55.291706611Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:21:55.291720329Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:21:55.291731434Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:21:55.291740773Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:22:00.310747114Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:22:00.342772086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:22:00.342885184Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:22:00.367609893Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:22:00.367667949Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:22:00.367684577Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:22:00.367694079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:22:00.367703084Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:22:05.389093835Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:22:05.420971311Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:22:05.421103401Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:22:05.445313804Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:22:05.445355564Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:22:05.445369554Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:22:05.445380909Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:22:05.445390294Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:22:10.461799432Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:22:10.492530351Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:22:10.492641422Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:22:10.515131407Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:22:10.515176358Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:22:10.515190391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:22:10.515202405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:22:10.51521312Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:22:15.533331446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:22:15.562100663Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:22:15.562216296Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:22:15.585370938Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:22:15.585426787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:22:15.585442141Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:22:15.585453854Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:22:15.585462247Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:22:20.602299118Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:22:20.630104822Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:22:20.630218513Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:22:20.653895995Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:22:20.65393721Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:22:20.653978375Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:22:20.654004741Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:22:20.654014931Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:22:25.670165752Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:22:25.698960947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:22:25.699084984Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:22:25.724173706Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:22:25.72421712Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:22:30.740269136Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:22:30.770253097Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:22:30.770359693Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:22:30.790951017Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:22:30.790995174Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:22:30.791008956Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:22:30.791020211Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:22:30.791029179Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:22:35.807786522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:22:35.836847606Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:22:35.836956857Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:22:35.858816913Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:22:35.858874595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:22:35.858891197Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:22:35.858902106Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:22:35.858910412Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:22:40.879548749Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:22:40.910060304Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:22:40.910147927Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:22:40.932019561Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:22:40.93206365Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:22:40.932076567Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:22:40.932112628Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:22:40.932121384Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:22:45.950537635Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:22:45.98216231Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:22:45.982274878Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:22:46.002445737Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:22:46.00249328Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:22:46.002508866Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:22:46.002520524Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:22:46.002529742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:22:51.022711443Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:22:51.05302184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:22:51.05313683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:22:51.076913222Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:22:51.076956734Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:22:51.076970957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:22:51.076982851Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:22:51.076991891Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:22:56.094282713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:22:56.123111591Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:22:56.123214745Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:22:56.146756836Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:22:56.146808009Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:22:56.146823685Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:22:56.146833978Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:22:56.146842233Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:23:01.168296158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:23:01.19884566Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:23:01.198944439Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:23:01.221765899Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:23:01.221813085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:23:01.221828453Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:23:01.221839635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:23:01.221848322Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:23:06.23445617Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:23:06.263950899Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:23:06.264067486Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:23:06.28727209Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:23:06.287317894Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:23:06.287333639Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:23:06.28734499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:23:06.287354723Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:23:11.307612683Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:23:11.337817677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:23:11.337905785Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:23:11.360202353Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:23:11.360286577Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:23:11.360303141Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:23:11.360377712Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:23:11.360388407Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:23:16.376289721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:23:16.4050753Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:23:16.405176293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:23:16.427437788Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:23:16.427478746Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:23:16.427493859Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:23:16.427504504Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:23:16.427513859Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:23:21.443153672Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:23:21.472079734Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:23:21.472176177Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:23:21.492245244Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:23:21.492292223Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:23:21.492307204Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:23:21.492318606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:23:21.492328111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:23:26.50930174Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:23:26.537593405Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:23:26.537701204Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:23:26.563083548Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:23:26.563128299Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:23:26.56314153Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:23:26.56315173Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:23:26.563160857Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:23:31.580285109Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:23:31.606418101Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:23:31.606532946Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:23:31.626712552Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:23:31.626756015Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:23:31.626769788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:23:31.626781884Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:23:31.626801049Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:23:36.642296164Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:23:36.670836473Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:23:36.670948856Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:23:36.694733062Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:23:36.694779613Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:23:36.694809976Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:23:36.694820523Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:23:36.694828681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:23:41.70917128Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:23:41.7397481Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:23:41.739843667Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:23:41.76183764Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:23:41.76189671Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:23:41.761909828Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:23:41.761931264Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:23:41.761939356Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:23:46.779123845Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:23:46.810055027Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:23:46.810144215Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:23:46.833112364Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:23:46.833155012Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:23:46.833168929Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:23:46.833181795Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:23:46.833191263Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:23:51.855277376Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:23:51.884384785Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:23:51.884565146Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:23:51.908765556Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:23:51.908810588Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:23:51.908825823Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:23:51.908836229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:23:51.908846436Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:23:56.923633989Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:23:56.95407672Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:23:56.954170197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:23:56.974766165Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:23:56.974807688Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:23:56.974844496Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:23:56.974855188Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:23:56.974864142Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:24:02.026539722Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:24:02.171197931Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:24:02.171414832Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:24:02.238513783Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:24:02.238569375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:24:02.238584445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:24:02.238596962Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:24:02.238605473Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:24:07.256295076Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:24:07.285870554Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:24:07.285960852Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:24:07.30934871Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:24:07.309393613Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:24:07.309408571Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:24:07.309436473Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:24:07.309445873Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:24:12.332338542Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:24:12.367527629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:24:12.367634314Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:24:12.38768876Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:24:12.387734397Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:24:12.387749419Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:24:12.387759747Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:24:12.387769925Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:24:17.404118466Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:24:17.434316816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:24:17.434411464Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:24:17.457030041Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:24:17.457072437Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:24:17.45708561Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:24:17.457097319Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:24:17.4571076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:24:22.473593718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:24:22.503429582Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:24:22.503544607Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:24:22.529039707Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:24:22.529084477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:24:22.529097783Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:24:22.529133044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:24:22.529142244Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:24:27.542554332Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:24:27.57421518Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:24:27.574338444Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:24:27.594853212Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:24:27.594900824Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:24:27.594913757Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:24:27.5949252Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:24:27.594934513Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:24:32.617305714Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:24:32.64746718Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:24:32.647586376Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:24:32.671252316Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:24:32.671297765Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:24:32.671312134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:24:37.688828838Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:24:37.719598476Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:24:37.7197169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:24:37.743823242Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:24:37.743863632Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:24:37.743876271Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:24:37.743888014Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:24:37.743897646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:24:42.761344408Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:24:42.791034099Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:24:42.791369839Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:24:42.813667373Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:24:42.813713542Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:24:42.813728268Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:24:42.81374097Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:24:42.813749823Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:24:47.834104482Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:24:47.86307891Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:24:47.863196296Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:24:47.88860833Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:24:47.888650141Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:24:47.88867478Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:24:47.88868607Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:24:47.888694649Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:24:52.909306713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:24:52.938079147Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:24:52.938195785Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:24:52.963540325Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:24:52.963586119Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:24:52.963600445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:24:52.963612358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:24:52.963621676Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:24:57.979139224Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:24:58.009391379Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:24:58.009542771Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:24:58.033155685Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:24:58.033203008Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:24:58.03321884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:24:58.033229249Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:24:58.033250814Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:25:03.054765177Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:25:03.083587248Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:25:03.083702116Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:25:03.108964107Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:25:03.109007136Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:25:03.1090206Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:25:03.109032365Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:25:08.126360837Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:25:08.154862468Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:25:08.154962397Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:25:08.180092471Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:25:08.180140521Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:25:08.18015477Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:25:08.180165817Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:25:08.180175015Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:25:13.197088032Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:25:13.226815783Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:25:13.226932566Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:25:13.252815554Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:25:13.252873248Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:25:13.252887797Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:25:13.252918922Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:25:13.25293805Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:25:18.275375665Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:25:18.30270483Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:25:18.302815255Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:25:18.325329881Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:25:18.325373298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:25:18.325412205Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:25:18.325421968Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:25:18.325430591Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:25:23.346309169Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:25:23.3801872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:25:23.3803169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:25:23.400019685Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:25:23.400065518Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:25:23.400079295Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:25:23.400092026Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:25:23.400102024Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:25:28.418275521Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:25:28.449041538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:25:28.44913467Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:25:28.469329154Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:25:28.469371495Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:25:28.469402521Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:25:28.469415575Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:25:28.469426111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:25:33.490274977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:25:33.518964608Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:25:33.519057443Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:25:33.541598068Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:25:33.541645928Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:25:33.541662346Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:25:33.541674101Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:25:33.541683631Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:25:38.558144103Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:25:38.588521594Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:25:38.588636798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:25:38.614914574Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:25:38.614955662Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:25:38.614968806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:25:38.614978702Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:25:38.614987053Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:25:43.632692901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:25:43.663321098Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:25:43.663430991Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:25:43.688420102Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:25:43.688574914Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:25:43.688590509Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:25:43.688601235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:25:43.688610147Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:25:48.705177008Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:25:48.734107719Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:25:48.734228301Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:25:48.757089813Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:25:48.757132719Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:25:48.757146802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:25:48.757158734Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:25:48.757168215Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:25:53.778459737Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:25:53.808658319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:25:53.808775928Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:25:53.832668954Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:25:53.83271256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:25:53.8327264Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:25:53.832747546Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:25:53.832756106Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:25:58.84679171Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:25:58.877542639Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:25:58.87765877Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:25:58.902290007Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:25:58.902332273Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:25:58.902344923Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:25:58.902371038Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:25:58.902380082Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:26:03.91431799Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:26:03.943777652Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:26:03.943875102Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:26:03.966266519Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:26:03.966316995Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:26:03.966337667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:26:03.966348421Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:26:03.966356792Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:26:08.984637828Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:26:09.013778134Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:26:09.013895349Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:26:09.040481395Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:26:09.040555654Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:26:09.04057146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:26:09.040582218Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:26:09.040591173Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:26:14.058563305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:26:14.088218762Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:26:14.088326342Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:26:14.111568181Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:26:14.111614387Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:26:14.111629252Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:26:14.111668244Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:26:14.111677641Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:26:19.126227929Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:26:19.156157478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:26:19.156265803Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:26:19.175564808Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:26:19.175611548Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:26:19.175626461Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:26:19.175636935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:26:19.175643457Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:26:24.192762517Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:26:24.221390567Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:26:24.221532686Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:26:24.242301749Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:26:24.24235381Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:26:24.242368047Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:26:24.242391152Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:26:24.242400558Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:26:29.258357717Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:26:29.288324185Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:26:29.288543719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:26:29.310637761Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:26:29.310697588Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:26:29.310712668Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:26:29.310722384Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:26:29.310731252Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:26:34.328685149Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:26:34.360618018Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:26:34.360733098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:26:34.38156227Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:26:34.381618212Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:26:34.381632278Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:26:34.381642764Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:26:34.381651502Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:26:39.397539537Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:26:39.4257718Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:26:39.425884548Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:26:39.449202204Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:26:39.449257856Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:26:39.449273093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:26:39.449284974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:26:39.449303418Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:26:44.466226749Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:26:44.495401953Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:26:44.495521064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:26:44.516921115Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:26:44.516965024Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:26:44.516977893Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:26:44.516989236Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:26:44.516999073Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:26:49.53441725Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:26:49.56393519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:26:49.564052732Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:26:49.586118733Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:26:49.586159926Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:26:49.586190004Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:26:49.58619974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:26:49.586207754Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:26:54.605319267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:26:54.634370472Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:26:54.634480384Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:26:54.655084097Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:26:54.655125894Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:26:54.655138579Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:26:54.655149765Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:26:54.655160266Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:26:59.674286948Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:26:59.702162442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:26:59.70227372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:26:59.726131086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:26:59.726175304Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:26:59.726189289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:26:59.726200953Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:26:59.72621043Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:27:04.740307292Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:27:04.769161775Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:27:04.769283916Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:27:04.791192988Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:27:04.791266612Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:27:04.791282559Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:27:04.791291742Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:27:04.791300759Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:27:09.811843382Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:27:09.841883414Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:27:09.841973135Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:27:09.863939023Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:27:09.863979916Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:27:09.863994611Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:27:09.864005889Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:27:09.864015207Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:27:14.879547406Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:27:14.90961503Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:27:14.909732907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:27:14.929941614Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:27:14.929987874Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:27:14.930001401Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:27:14.930024043Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:27:14.93003322Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:27:19.952264084Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:27:19.98117519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:27:19.981282797Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:27:20.013808225Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:27:20.013858747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:27:20.01387362Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:27:20.013884626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:27:20.013892097Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:27:25.029271906Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:27:25.058870661Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:27:25.058977549Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:27:25.083809834Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:27:25.083853962Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:27:25.083867704Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:27:25.083901788Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:27:25.083911431Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:27:30.103294519Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:27:30.13362844Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:27:30.13373646Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:27:30.155033256Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:27:30.155075098Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:27:30.155089735Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:27:30.155100987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:27:30.155111228Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:27:35.17401654Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:27:35.203711671Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:27:35.203823247Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:27:35.225283554Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:27:35.225334777Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:27:40.244155302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:27:40.274929553Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:27:40.275033628Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:27:40.299368228Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:27:40.299410192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:27:40.299423713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:27:40.29943444Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:27:40.299443148Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:27:45.315866716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:27:45.346732601Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:27:45.346840878Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:27:45.365985019Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:27:45.366303289Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:27:45.366326194Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:27:45.366365837Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:27:45.366376618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:27:50.381894809Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:27:50.411978552Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:27:50.412090394Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:27:50.438123712Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:27:50.438164543Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:27:50.438178464Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:27:50.438190673Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:27:50.438198856Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:27:55.456207971Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:27:55.485542417Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:27:55.485652141Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:27:55.507881188Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:27:55.507920764Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:27:55.507933447Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:27:55.507944965Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:27:55.507954972Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:28:00.526038563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:28:00.555123246Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:28:00.555247931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:28:00.575518147Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:28:00.575559587Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:28:00.575573232Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:28:00.575584443Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:28:00.575592838Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:28:05.58979647Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:28:05.61996056Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:28:05.620076732Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:28:05.644655698Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:28:05.644706376Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:28:05.644721501Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:28:05.644753169Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:28:05.644762921Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:28:10.657897055Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:28:10.692266639Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:28:10.69238369Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:28:10.718841805Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:28:10.718887793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:28:10.718901807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:28:10.71891373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:28:10.718924544Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:28:15.735891062Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:28:15.763949422Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:28:15.76407694Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:28:15.783674544Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:28:15.78371872Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:28:15.783731307Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:28:20.804264878Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:28:20.834746423Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:28:20.834855692Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:28:20.86031624Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:28:20.860358794Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:28:20.860372295Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:28:20.860383026Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:28:20.860391434Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:28:25.878922387Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:28:25.907806336Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:28:25.908311075Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:28:25.930311004Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:28:25.930365128Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:28:25.930380264Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:28:25.930391879Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:28:25.930400063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:28:30.948669446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:28:30.977620371Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:28:30.977708954Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:28:31.006811265Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:28:31.006863719Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:28:31.00687738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:28:31.006887314Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:28:31.006895885Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:28:36.022710646Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:28:36.052992955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:28:36.053121679Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:28:36.078111968Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:28:36.078166048Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:28:36.078181658Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:28:36.07819098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:28:36.078199294Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:28:41.100095145Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:28:41.13071523Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:28:41.13083152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:28:41.152340074Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:28:41.152385012Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:28:41.152398402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:28:41.152598034Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:28:41.152612899Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:28:46.170737763Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:28:46.199614708Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:28:46.199748263Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:28:46.22254176Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:28:46.222584779Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:28:46.222598341Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:28:46.222608637Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:28:46.2226186Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:28:51.238062154Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:28:51.266391695Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:28:51.266480624Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:28:51.292748812Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:28:51.292801742Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:28:51.292816709Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:28:51.292827417Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:28:51.292834807Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:28:56.31428326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:28:56.342462914Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:28:56.342559174Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:28:56.362351835Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:28:56.362393538Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:28:56.362408212Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:28:56.362419377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:29:01.389851774Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:29:01.418847627Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:29:01.418952673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:29:01.442771496Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:29:01.442818409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:29:01.442858292Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:29:01.442869804Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:29:01.442878451Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:29:06.458629166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:29:06.489353577Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:29:06.489464636Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:29:06.515175386Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:29:06.515264752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:29:06.515284395Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:29:06.515310094Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:29:06.515319544Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:29:11.536195222Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:29:11.564186814Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:29:11.564318035Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:29:11.584669731Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:29:11.584714317Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:29:11.584729477Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:29:11.584741138Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:29:11.584750721Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:29:16.60162168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:29:16.629518813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:29:16.629639296Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:29:16.651437859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:29:16.651479269Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:29:16.651493506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:29:16.651505015Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:29:16.651514239Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:29:21.674282318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:29:21.7032745Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:29:21.703365649Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:29:21.723964999Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:29:21.724404515Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:29:21.724565544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:29:21.724580779Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:29:21.724592681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:29:26.740453508Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:29:26.772200328Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:29:26.772323303Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:29:26.795508987Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:29:26.795570962Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:29:26.795585294Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:29:26.795595963Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:29:26.795604116Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:29:31.816362177Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:29:31.845730511Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:29:31.845835002Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:29:31.867608799Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:29:31.867653671Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:29:31.867667652Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:29:31.867712692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:29:31.867721934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:29:36.882079533Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:29:36.911394943Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:29:36.911510086Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:29:36.935808162Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:29:36.935867441Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:29:36.935881855Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:29:36.935892393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:29:36.935900528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:29:41.952848871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:29:41.984170396Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:29:41.98429153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:29:42.009427267Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:29:42.009485877Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:29:42.009501311Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:29:42.009531054Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:29:42.009558221Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:29:47.029293717Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:29:47.058798793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:29:47.058891794Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:29:47.081426162Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:29:47.081468635Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:29:47.081483212Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:29:47.08158271Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T20:29:47.081823875Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:29:47.081839462Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:29:52.103171379Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:29:52.13488435Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:29:52.134993593Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:29:52.157480375Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:29:52.157524849Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:29:52.157538462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:29:52.157549916Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:29:52.157559621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:29:57.170371895Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:29:57.202582907Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:29:57.202697896Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:29:57.22493278Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:29:57.224975072Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:29:57.224989204Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:29:57.225001506Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:29:57.225020766Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:30:02.333118539Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:30:02.53173441Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:30:02.531883969Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:30:02.630682068Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:30:02.630724645Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:30:02.630740149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:30:02.630751018Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:30:02.630759842Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:30:07.653915476Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:30:07.683544757Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:30:07.683661909Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:30:07.706383296Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:30:07.706430398Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:30:07.706442952Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:30:07.706454786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:30:07.706464786Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:30:12.724761195Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:30:12.753199209Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:30:12.75333527Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:30:12.773733326Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:30:12.77377714Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:30:12.773790302Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:30:17.787683477Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:30:17.818372227Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:30:17.818472732Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:30:17.841618444Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:30:17.841662088Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:30:17.841676968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:30:17.841706887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:30:17.8417164Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:30:22.858546719Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:30:22.885492063Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:30:22.885585839Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:30:22.90645297Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:30:22.906506681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:30:22.906523688Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:30:22.906535185Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:30:22.906543317Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:30:27.920304124Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:30:27.948749449Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:30:27.948883178Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:30:27.970429593Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:30:27.970478273Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:30:27.970493505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:30:27.970502122Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:30:27.970508931Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:30:32.988816393Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:30:33.019902944Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:30:33.020017213Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:30:33.043652277Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:30:33.043694533Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:30:33.043708061Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:30:33.043738202Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:30:33.043748303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:30:38.058369767Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:30:38.087092805Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:30:38.087230291Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:30:38.113216741Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:30:38.113278163Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:30:38.11329386Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:30:38.113305008Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:30:38.113313335Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:30:43.132661727Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:30:43.159682716Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:30:43.159768661Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:30:43.18106328Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:30:43.181123349Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:30:43.181138387Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:30:43.181150683Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:30:43.181159999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:30:48.199181685Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:30:48.228153264Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:30:48.228266343Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:30:48.249522513Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:30:48.249569116Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:30:48.249583192Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:30:48.249593969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:30:48.249602833Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:30:53.269806591Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:30:53.29864985Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:30:53.298738067Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:30:53.321253654Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:30:53.321294868Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:30:53.321310057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:30:53.321323137Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:30:53.321334238Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:30:58.340266508Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:30:58.368290794Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:30:58.36838684Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:30:58.388676282Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:30:58.388717679Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:30:58.388743347Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:30:58.388755137Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:30:58.388763288Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:31:03.407296196Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:31:03.436941489Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:31:03.437040767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:31:03.45779934Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:31:03.457865374Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:31:03.457879853Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:31:03.457889176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:31:03.457897359Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:31:08.475146585Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:31:08.504403661Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:31:08.504601216Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:31:08.526895968Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:31:08.526939079Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:31:08.526953818Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:31:08.526964665Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:31:08.526974278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:31:13.545046259Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:31:13.575552765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:31:13.575647613Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:31:13.599756735Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:31:13.599800886Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:31:13.599816143Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:31:13.599827983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:31:13.59983681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:31:18.617867135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:31:18.645902406Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:31:18.645992626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:31:18.670405242Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:31:18.670826571Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:31:18.670849676Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:31:18.670990238Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T20:31:18.671078202Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:31:18.671091298Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:31:23.691295174Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:31:23.722022872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:31:23.722137244Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:31:23.742286198Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:31:23.742362968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:31:23.742388506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:31:23.742399223Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:31:23.742485897Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:31:28.76193947Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:31:28.790183416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:31:28.790337831Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:31:28.813495068Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:31:28.813537024Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:31:28.813550664Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:31:28.813563405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:31:28.813573925Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:31:33.828699317Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:31:33.859912093Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:31:33.860000048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:31:33.882958529Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:31:33.883020117Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:31:33.883034431Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:31:33.88304454Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:31:33.883052903Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:31:38.901286231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:31:38.929517236Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:31:38.929632001Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:31:38.949016334Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:31:38.949061733Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:31:38.949077082Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:31:38.949087899Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:31:38.949096006Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:31:43.966396476Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:31:43.998515077Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:31:43.998629316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:31:44.019885476Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:31:44.019929864Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:31:44.019945287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:31:44.019956043Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:31:44.019965934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:31:49.038952239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:31:49.069906364Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:31:49.070038136Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:31:49.091632544Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:31:49.091685111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:31:49.091700677Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:31:49.091711405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:31:49.091719381Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:31:54.108294835Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:31:54.137903549Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:31:54.138016918Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:31:54.15828643Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:31:54.158726305Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:31:54.158772045Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:31:54.158785287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:31:54.158796303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:31:59.175527399Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:31:59.205458724Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:31:59.205564163Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:31:59.227478624Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:31:59.227521649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:31:59.227537282Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:31:59.227570552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:31:59.227579305Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:32:04.242775681Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:32:04.278685025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:32:04.27880721Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:32:04.300159467Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:32:04.300218348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:32:04.300253136Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:32:04.300265546Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:32:04.300273838Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:32:09.317182468Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:32:09.347409526Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:32:09.347537849Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:32:09.370293694Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:32:09.370339474Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:32:09.370354437Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:32:09.370365809Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:32:09.370375214Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:32:14.38532268Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:32:14.416885322Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:32:14.416974741Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:32:14.437999989Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:32:14.438044165Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:32:14.438066285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:32:14.438077182Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:32:14.438085428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:32:19.453876143Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:32:19.48438632Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:32:19.484604306Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:32:19.508602419Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:32:19.508646476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:32:19.508661685Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:32:19.508673544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:32:19.508682532Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:32:24.527399118Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:32:24.555981956Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:32:24.556092518Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:32:24.57974463Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:32:24.579788745Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:32:24.579802256Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:32:24.579814221Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:32:24.579823342Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:32:29.596352771Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:32:29.627158815Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:32:29.627281604Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:32:29.647820712Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:32:29.647867787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:32:29.647882041Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:32:29.647894287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:32:29.647903132Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:32:34.664372036Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:32:34.695712258Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:32:34.695838832Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:32:34.721772542Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:32:34.721826095Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:32:34.72184128Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:32:34.72185173Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:32:34.721859912Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:32:39.739913895Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:32:39.767859037Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:32:39.767953656Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:32:39.791495983Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:32:39.79157788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:32:39.791597517Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:32:39.791608661Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:32:39.791616462Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:32:44.812145703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:32:44.841498678Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:32:44.841597927Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:32:44.86611446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:32:44.866175055Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:32:44.86619056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:32:44.866200753Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:32:44.86620917Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:32:49.883536374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:32:49.91353383Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:32:49.913649763Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:32:49.94018584Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:32:49.940269135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:32:49.940290763Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:32:49.940302303Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:32:49.940310669Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:32:54.957126758Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:32:54.988072812Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:32:54.988166256Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:32:55.012660009Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:32:55.012702175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:32:55.012718172Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:32:55.012729146Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:32:55.012738068Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:33:00.052430225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:33:00.123057115Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:33:00.123159951Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:33:00.193585303Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:33:00.193630135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:33:00.193645675Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:33:00.19365748Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:33:00.1936667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:33:05.210460524Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:33:05.241427613Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:33:05.241539414Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:33:05.267263438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:33:05.267305382Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:33:05.267319364Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:33:10.285847027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:33:10.317015771Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:33:10.317126524Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:33:10.340417886Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:33:10.340543439Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:33:10.340561573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:33:10.340573277Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:33:10.340582097Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:33:15.357265869Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:33:15.384752443Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:33:15.384864035Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:33:15.407217015Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:33:15.407282268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:33:15.407298423Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:33:15.407307978Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:33:15.407316333Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:33:20.42529718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:33:20.455405659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:33:20.45550461Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:33:20.481038472Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:33:20.481087324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:33:20.481113952Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:33:20.481126097Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:33:20.481135904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:33:25.498174489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:33:25.530921609Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:33:25.531012493Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:33:25.551539708Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:33:25.551585841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:33:30.570680042Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:33:30.600579923Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:33:30.600678198Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:33:30.623118275Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:33:30.623163416Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:33:30.623176528Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:33:30.62318921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:33:30.623198197Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:33:35.640854514Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:33:35.669743507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:33:35.669842291Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:33:35.69480255Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:33:35.694859552Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:33:35.694874377Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:33:35.69488498Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:33:35.694893443Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:33:40.717285736Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:33:40.746544314Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:33:40.746638211Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:33:40.770763115Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:33:40.770833856Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:33:40.770848552Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:33:40.770859052Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:33:40.77086691Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:33:45.78815649Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:33:45.817555035Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:33:45.817701999Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:33:45.839138469Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:33:45.839186707Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:33:45.839201132Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:33:45.83921202Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:33:45.839220915Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:33:50.858306667Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:33:50.887789702Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:33:50.887904819Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:33:50.914681344Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:33:50.914725186Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:33:50.914740839Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:33:55.930280644Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:33:55.958340025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:33:55.958436681Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:33:55.978805164Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:33:55.978864009Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:33:55.978878889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:33:55.978889962Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:33:55.97889838Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:34:00.997050619Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:34:01.028191439Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:34:01.028327074Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:34:01.050621806Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:34:01.050680745Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:34:01.050744178Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:34:01.050774761Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:34:01.050785111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:34:06.066221769Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:34:06.095864712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:34:06.095960351Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:34:06.121738675Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:34:06.122174767Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:34:06.122439485Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:34:06.122763416Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:34:06.122898069Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:34:11.142477537Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:34:11.173197687Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:34:11.173316824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:34:11.200776803Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:34:11.20082321Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:34:11.200837935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:34:11.200849228Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:34:11.200859597Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:34:16.217876666Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:34:16.248179353Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:34:16.248312558Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:34:16.271496668Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:34:16.271537091Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:34:16.271551659Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:34:16.271563441Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:34:16.271572511Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:34:21.291873152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:34:21.321586606Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:34:21.321689315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:34:21.349544187Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:34:21.34958647Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:34:21.34961739Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:34:21.349628612Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:34:21.349636905Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:34:26.368155314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:34:26.396746057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:34:26.396859284Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:34:26.419044342Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:34:26.419103387Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:34:26.4191195Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:34:26.41913059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:34:26.419139019Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:34:31.438983912Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:34:31.467183192Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:34:31.467311282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:34:31.491832766Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:34:31.491877425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:34:31.491891144Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:34:31.491909549Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:34:31.491918605Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:34:36.507249737Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:34:36.53781267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:34:36.537949836Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:34:36.561815051Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:34:36.561874335Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:34:36.561888769Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:34:36.561947199Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:34:36.561956859Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:34:41.577623913Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:34:41.605732471Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:34:41.605854205Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:34:41.630959803Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:34:41.631003812Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:34:41.631018424Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:34:41.631030565Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:34:41.631039989Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:34:46.648353366Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:34:46.678177376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:34:46.678293863Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:34:46.700341699Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:34:46.700388536Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:34:46.700403132Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:34:46.70041394Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:34:46.700424375Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:34:51.718296292Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:34:51.746485853Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:34:51.746599853Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:34:51.771769389Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:34:51.771824237Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:34:51.771840363Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:34:51.771851169Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:34:51.771859518Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:34:56.788746721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:34:56.817470474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:34:56.817579763Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:34:56.84142327Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:34:56.841467887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:34:56.841481014Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:34:56.841492531Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:34:56.841502711Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:35:01.868979658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:35:01.978180021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:35:01.978305097Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:35:02.06867965Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:35:02.068749812Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:35:02.068765091Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:35:02.068774787Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:35:02.06878425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:35:07.087713581Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:35:07.117815897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:35:07.117916319Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:35:07.14183148Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:35:07.141876633Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:35:07.141891673Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:35:07.14190357Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:35:07.141912895Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:35:12.163272326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:35:12.193544672Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:35:12.193640562Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:35:12.217204444Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:35:12.217283651Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:35:12.217310443Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:35:12.217321881Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:35:12.217330909Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:35:17.232861678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:35:17.263448855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:35:17.263570496Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:35:17.287573267Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:35:17.287619458Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:35:17.287634185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:35:17.287645513Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:35:17.287655356Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:35:22.307966106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:35:22.338925759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:35:22.339018725Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:35:22.364416281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:35:22.364574339Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:35:22.364590629Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:35:22.364602592Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:35:22.364611654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:35:27.383398129Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:35:27.413802725Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:35:27.41391836Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:35:27.437771778Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:35:27.437828809Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:35:27.43784414Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:35:27.437854376Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:35:27.437862484Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:35:32.458287289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:35:32.486810268Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:35:32.486930612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:35:32.506355788Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:35:32.506396395Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:35:32.506410265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:35:32.506443987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:35:32.506452927Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:35:37.52663056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:35:37.556002947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:35:37.556148231Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:35:37.577043662Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:35:37.577107417Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:35:37.57712383Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:35:37.577135749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:35:37.577144264Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:35:42.594126508Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:35:42.622452562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:35:42.622543152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:35:42.644901687Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:35:42.644949178Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:35:42.644963787Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:35:42.644975573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:35:42.644985189Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:35:47.661594205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:35:47.691796069Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:35:47.691928487Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:35:47.713792443Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:35:52.734776245Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:35:52.763852416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:35:52.763961249Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:35:52.784846022Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:35:52.784898942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:35:52.784914475Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:35:52.784926177Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:35:52.784936087Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:35:57.799447707Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:35:57.828917837Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:35:57.829011085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:35:57.853179638Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:35:57.853223844Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:35:57.853259785Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:35:57.853271507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:35:57.853281597Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:36:02.872922744Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:36:02.903364917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:36:02.90347187Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:36:02.926332323Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:36:02.926376095Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:36:02.926391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:36:02.926425304Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:36:02.926434047Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:36:07.942775727Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:36:07.973830966Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:36:07.973934502Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:36:07.9952168Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:36:07.995273301Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:36:07.995289222Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:36:07.99531764Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:36:07.995327577Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:36:13.018548966Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:36:13.048160244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:36:13.048276979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:36:13.073520364Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:36:13.07356397Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:36:13.073577493Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:36:13.073587936Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:36:13.073596286Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:36:18.09534584Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:36:18.123157843Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:36:18.123305066Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:36:18.144163452Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:36:18.144206683Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:36:18.144221856Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:36:18.144245345Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:36:23.161148353Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:36:23.192035155Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:36:23.192150761Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:36:23.219185618Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:36:23.219246671Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:36:23.219263921Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:36:23.219273916Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:36:23.219280805Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:36:28.235282287Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:36:28.2641568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:36:28.264294752Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:36:28.287027857Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:36:28.28708009Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:36:28.28709579Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:36:28.287183709Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:36:28.287194875Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:36:33.307879157Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:36:33.338889194Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:36:33.338978438Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:36:33.363802605Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:36:33.363847503Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:36:33.363861365Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:36:33.363893759Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:36:33.363902021Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:36:38.380733848Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:36:38.411542035Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:36:38.411631185Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:36:38.431193031Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:36:38.431290178Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:36:38.431343553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:36:38.431355155Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:36:38.431364198Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:36:43.450008177Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:36:43.480152767Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:36:43.480255726Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:36:43.502344052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:36:43.502384007Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:36:43.502398341Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:36:43.502437838Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:36:43.502446555Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:36:48.520859699Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:36:48.550842062Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:36:48.550946341Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:36:48.571935986Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:36:48.571979059Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:36:48.571993528Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:36:48.572006088Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:36:48.572014985Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:36:53.589491515Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:36:53.621324368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:36:53.621432175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:36:53.648014161Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:36:53.648084314Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:36:53.648177573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:36:53.648192564Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:36:53.64820157Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:36:58.664911871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:36:58.695070043Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:36:58.695161568Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:36:58.719386255Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:36:58.719428075Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:36:58.719441704Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:37:03.740034288Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:37:03.769977528Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:37:03.770086303Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:37:03.794218245Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:37:03.794273043Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:37:03.794287685Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:37:03.794298564Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:37:03.794306822Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:37:08.813551391Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:37:08.844053298Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:37:08.844136472Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:37:08.869401169Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:37:08.86944468Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:37:08.869458672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:37:08.86947026Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:37:08.869481044Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:37:13.884152417Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:37:13.912847625Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:37:13.912945244Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:37:13.939064953Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:37:13.939660599Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:37:13.939831144Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:37:13.939849019Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:37:13.93986086Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:37:18.956178756Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:37:18.986613057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:37:18.986715134Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:37:19.006646084Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:37:19.006688356Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:37:19.006702854Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:37:19.006738318Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:37:19.006747703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:37:24.023995044Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:37:24.054424499Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:37:24.054534644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:37:24.078487015Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:37:24.078525516Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:37:24.078539185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:37:29.093722167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:37:29.123308138Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:37:29.123410164Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:37:29.147724523Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:37:29.147765503Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:37:29.147779229Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:37:29.147789621Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:37:29.14779778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:37:34.164286705Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:37:34.194203709Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:37:34.194318334Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:37:34.218975421Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:37:34.219016648Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:37:34.219030361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:37:34.219042732Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:37:34.219051634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:37:39.235205413Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:37:39.267545599Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:37:39.267655147Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:37:39.29006733Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:37:39.290111113Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:37:39.290124613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:37:39.290145749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:37:39.290154538Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:37:44.308296325Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:37:44.335804125Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:37:44.335898252Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:37:44.358837734Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:37:44.358885873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:37:44.358901918Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:37:44.358912331Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:37:44.358919502Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:37:49.379669169Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:37:49.408940243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:37:49.40903754Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:37:49.436867928Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:37:49.436913702Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:37:49.436928649Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:37:49.436941304Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:37:49.43695108Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:37:54.450221428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:37:54.478757486Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:37:54.478866851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:37:54.502008044Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:37:54.502056307Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:37:54.502069636Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:37:54.502080533Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:37:54.502090076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:37:59.519159481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:37:59.548092077Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:37:59.548197595Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:37:59.571442823Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:37:59.571499626Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:37:59.571513725Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:37:59.571526337Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:37:59.571535313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:38:04.586004121Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:38:04.616970716Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:38:04.617061019Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:38:04.642159787Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:38:04.64220732Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:38:04.642220686Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:38:04.642246332Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:38:04.642255635Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:38:09.659859424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:38:09.688959624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:38:09.689072965Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:38:09.709928727Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:38:09.70997201Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:38:09.709984951Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:38:09.710035878Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:38:09.710045676Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:38:14.729317812Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:38:14.758908428Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:38:14.759010891Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:38:14.786634466Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:38:14.786679069Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:38:14.786694136Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:38:14.786705245Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:38:14.786714996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:38:19.804316879Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:38:19.832806889Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:38:19.832901329Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:38:19.852180298Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:38:19.852222463Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:38:19.852248806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:38:19.852260305Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:38:19.852268813Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:38:24.873930071Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:38:24.90301594Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:38:24.903109093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:38:24.925142612Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:38:24.925185523Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:38:24.925223049Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:38:24.925246276Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:38:24.925257113Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:38:29.942081964Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:38:29.972640038Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:38:29.972734654Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:38:29.998870297Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:38:29.998929879Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:38:29.998945175Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:38:29.998956327Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:38:29.998964341Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:38:35.014579563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:38:35.04431079Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:38:35.044407082Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:38:35.067896377Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:38:35.067941455Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:38:35.067954788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:38:35.067965557Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:38:35.067976374Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:38:40.083359809Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:38:40.114534654Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:38:40.11464746Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:38:40.13715164Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:38:40.137211371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:38:40.137226122Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:38:40.137371215Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T20:38:40.137314677Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:38:40.137445988Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:38:45.154278973Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:38:45.184049537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:38:45.184158344Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:38:45.205808289Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:38:45.205851584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:38:45.205865394Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:38:50.227086604Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:38:50.256876755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:38:50.256980289Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:38:50.280718566Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:38:50.280761841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:38:50.280776172Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:38:50.280788124Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:38:50.280798072Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:38:55.297616341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:38:55.329187929Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:38:55.329326114Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:38:55.35228737Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:38:55.352328887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:38:55.352345136Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:38:55.352356018Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:39:00.370304029Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:39:00.399499116Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:39:00.399616835Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:39:00.422576995Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:39:00.422622155Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:39:00.4226368Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:39:00.422678957Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:39:00.422687742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:39:05.439412267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:39:05.470719419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:39:05.470859118Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:39:05.495072792Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:39:05.495308116Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:39:05.495388294Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:39:05.495402839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:39:05.495412118Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:39:10.5125938Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:39:10.542461247Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:39:10.542575889Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:39:10.566868439Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:39:10.566913732Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:39:10.566927865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:39:10.566939611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:39:10.566949416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:39:15.585274542Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:39:15.614125256Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:39:15.614251499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:39:15.63899623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:39:15.639044151Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:39:15.639058455Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:39:15.639082705Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:39:15.639093155Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:39:20.660289142Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:39:20.690438745Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:39:20.690543498Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:39:20.715128596Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:39:20.71517307Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:39:20.715187553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:39:20.715198706Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:39:20.715209525Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:39:25.732177084Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:39:25.76243436Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:39:25.762542878Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:39:25.787433948Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:39:25.787477552Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:39:25.787491926Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:39:25.78750308Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:39:25.787511947Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:39:30.807311139Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:39:30.838585863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:39:30.838703548Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:39:30.862401515Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:39:30.86244532Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:39:30.862458454Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:39:30.862469704Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:39:30.862489191Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:39:35.880289273Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:39:35.908201808Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:39:35.908316403Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:39:35.930399863Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:39:35.930439057Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:39:35.930454213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:39:35.93046699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:39:35.930476027Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:39:40.95567014Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:39:40.983662732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:39:40.983770872Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:39:41.009026473Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:39:41.009069289Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:39:41.009083809Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:39:41.009106156Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:39:41.009115Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:39:46.022963303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:39:46.054304125Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:39:46.054427423Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:39:46.078473423Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:39:46.078515964Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:39:46.078529392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:39:46.078539976Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:39:46.078548387Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:39:51.098704639Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:39:51.129578522Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:39:51.129678095Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:39:51.155349963Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:39:51.155412599Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:39:51.15542795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:39:51.155439098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:39:51.155447868Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:39:56.176449419Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:39:56.207938884Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:39:56.208053651Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:39:56.232050519Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:39:56.232099243Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:39:56.232113856Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:39:56.232149465Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:39:56.232158098Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:40:01.26919962Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:40:01.37682152Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:40:01.376956179Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:40:01.461899359Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:40:01.461941145Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:40:01.461955636Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:40:01.461967323Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:40:06.485287174Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:40:06.515527251Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:40:06.515630615Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:40:06.5413885Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:40:06.541447962Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:40:06.541463499Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:40:06.541480812Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:40:06.541489234Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:40:11.558284668Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:40:11.588310823Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:40:11.588400257Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:40:11.613460882Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:40:11.613503529Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:40:11.613516914Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:40:11.613529182Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:40:11.613539525Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:40:16.632296354Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:40:16.660752743Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:40:16.660869088Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:40:16.680949353Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:40:16.680990036Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:40:16.681003352Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:40:16.681038446Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:40:16.681047117Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:40:21.699645647Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:40:21.729941044Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:40:21.730053742Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:40:21.753224088Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:40:21.753280673Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:40:21.753296133Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:40:21.753306384Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:40:21.753316212Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:40:26.772298536Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:40:26.801112543Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:40:26.801204059Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:40:26.825222678Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:40:26.825274556Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:40:26.825290118Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:40:26.825299928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:40:26.825308788Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:40:31.844778602Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:40:31.872640766Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:40:31.872730511Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:40:31.896180508Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:40:31.89622608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:40:31.896250926Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:40:31.896262448Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:40:31.89627046Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:40:36.914935004Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:40:36.943880605Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:40:36.94400093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:40:36.967149898Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:40:36.967194872Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:40:36.967212822Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:40:36.967222911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:40:36.967230029Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:40:41.984290488Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:40:42.015331356Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:40:42.015447966Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:40:42.039673813Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:40:42.039716975Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:40:42.039730469Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:40:42.039835134Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:40:42.039845676Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:40:47.059321794Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:40:47.08813943Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:40:47.088247256Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:40:47.113384212Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:40:47.113432534Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:40:52.13199734Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:40:52.163344848Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:40:52.16343608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:40:52.188647479Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:40:52.188705603Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:40:52.188720839Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:40:52.18873057Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:40:52.188739628Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:40:57.206169841Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:40:57.236610209Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:40:57.236727582Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:40:57.261058576Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:40:57.261107095Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:40:57.261123629Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:40:57.261158894Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:40:57.261171508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:41:02.28045468Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:41:02.312919219Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:41:02.313020101Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:41:02.334223518Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:41:02.334285059Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:41:02.334299353Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:41:02.334310965Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:41:02.334320805Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:41:07.352725399Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:41:07.383502362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:41:07.383625133Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:41:07.407997455Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:41:07.408042421Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:41:07.408058785Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:41:07.408070928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:41:07.408080031Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:41:12.426429554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:41:12.456566146Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:41:12.45669679Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:41:12.480291598Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:41:12.480337891Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:41:12.480351011Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:41:12.480360864Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:41:12.480370334Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:41:17.504295515Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:41:17.53399869Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:41:17.534087782Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:41:17.556127577Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:41:17.556185241Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:41:17.556200972Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:41:17.556211606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:41:17.556221724Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:41:22.576369843Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:41:22.605740766Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:41:22.605854503Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:41:22.626635362Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:41:22.626689216Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:41:22.626705888Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:41:22.626717056Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:41:22.626801745Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:41:27.640143861Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:41:27.668811096Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:41:27.668906932Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:41:27.693389016Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:41:27.693439558Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:41:27.69345307Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:41:27.693463906Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:41:27.693472405Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:41:32.709660313Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:41:32.74290861Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:41:32.743025073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:41:32.769030989Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:41:32.769076977Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:41:32.769091671Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:41:32.76914254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:41:32.769152502Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:41:37.78718666Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:41:37.817363967Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:41:37.817460361Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:41:37.838144957Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:41:37.838193385Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:41:37.838207702Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:41:37.838219448Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:41:37.838226416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:41:42.857172106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:41:42.881863359Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:41:42.881987908Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:41:42.901025868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:41:42.901071242Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:41:42.901109373Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:41:42.901120839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:41:42.901128966Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:41:47.916611553Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:41:47.946635913Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:41:47.946751235Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:41:47.971343844Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:41:47.971385632Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:41:47.971400478Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:41:47.971411743Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:41:47.97142075Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:41:52.992267682Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:41:53.019924869Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:41:53.020021247Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:41:53.041967819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:41:53.042023457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:41:53.04204023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:41:53.042050605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:41:53.042058731Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:41:58.060104689Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:41:58.08893534Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:41:58.089055641Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:41:58.112195039Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:41:58.112694361Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:41:58.112836733Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:41:58.112855575Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:41:58.112866972Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:42:03.132286465Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:42:03.163981426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:42:03.164082389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:42:03.185652312Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:42:03.185699625Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:42:03.18571446Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:42:03.185725472Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:42:03.185734449Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:42:08.201562551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:42:08.230497437Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:42:08.230590996Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:42:08.254811224Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:42:08.25487706Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:42:08.254893445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:42:08.25490304Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:42:08.254913Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:42:13.273685959Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:42:13.306039663Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:42:13.306130047Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:42:13.330506875Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:42:13.330554436Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:42:13.330568509Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:42:13.330580136Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:42:13.330589411Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:42:18.35053622Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:42:18.379497684Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:42:18.379613515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:42:18.405503651Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:42:18.40554977Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:42:18.405564303Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:42:18.405573676Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:42:18.405580822Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:42:23.424576363Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:42:23.455495745Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:42:23.455586789Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:42:23.476676199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:42:28.493276441Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:42:28.519850894Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:42:28.519945016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:42:28.54526741Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:42:28.545318127Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:42:28.545334307Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:42:28.545370218Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:42:28.545381157Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:42:33.560274691Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:42:33.58982051Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:42:33.589936843Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:42:33.618813476Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:42:33.618852244Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:42:33.618865922Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:42:33.618878071Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:42:38.638554879Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:42:38.667385157Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:42:38.667479223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:42:38.688352589Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:42:38.688398304Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:42:38.688412913Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:42:38.688559468Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:42:38.688572731Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:42:43.704200922Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:42:43.732639003Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:42:43.732747255Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:42:43.75290188Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:42:43.75294499Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:42:43.752958063Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:42:43.752968942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:42:43.752979669Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:42:48.768736731Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:42:48.797571181Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:42:48.797663308Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:42:48.82400514Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:42:48.824047544Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:42:48.824061084Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:42:48.824073635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:42:48.824082198Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:42:53.838540333Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:42:53.869948701Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:42:53.870039888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:42:53.892389492Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:42:53.892494491Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:42:53.892511849Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:42:53.892524131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:42:53.892534131Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:42:58.910262148Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:42:58.938927315Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:42:58.939043631Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:42:58.959190739Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:42:58.959252549Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:42:58.959268196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:42:58.95927739Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:42:58.959285782Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:43:03.974338947Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:43:04.00573222Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:43:04.005844177Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:43:04.028582249Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:43:04.028628756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:43:04.028646069Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:43:04.028657255Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:43:04.02866665Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:43:09.043847253Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:43:09.073858867Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:43:09.073957512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:43:09.098576117Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:43:09.098619404Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:43:09.098656343Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:43:09.098667393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:43:09.09867518Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:43:14.114269236Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:43:14.145116706Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:43:14.145219021Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:43:14.168762176Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:43:14.168804653Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:43:14.168819207Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:43:19.189102399Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:43:19.218716118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:43:19.218809292Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:43:19.242854744Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:43:19.242898312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:43:19.242912669Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:43:19.242923693Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:43:19.242933245Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:43:24.258179035Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:43:24.289975624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:43:24.290064951Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:43:24.312580818Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:43:24.312888137Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:43:24.312944846Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:43:24.312959056Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:43:24.31296919Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:43:29.332725773Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:43:29.363152624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:43:29.363282884Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:43:29.386900186Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:43:29.386946742Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:43:29.386985591Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:43:29.386995759Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:43:29.387004251Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:43:34.40237644Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:43:34.430645619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:43:34.430773169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:43:34.454882938Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:43:34.45492414Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:43:34.454948495Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:43:34.454960591Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:43:34.454968809Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:43:39.473919047Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:43:39.503593985Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:43:39.503717249Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:43:39.524508178Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:43:39.524951081Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:43:39.525165729Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:43:39.525358054Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T20:43:39.525459088Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:43:39.525472773Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:43:44.541279128Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:43:44.573094551Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:43:44.57319133Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:43:44.599772943Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:43:44.599837893Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:43:44.599852901Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:43:44.59986323Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:43:44.599871764Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:43:49.623148507Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:43:49.653033572Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:43:49.653148596Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:43:49.676964841Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:43:49.677007326Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:43:49.677022121Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:43:49.677034258Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:43:49.67704392Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:43:54.692181845Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:43:54.724011269Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:43:54.724099824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:43:54.748199356Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:43:54.748261139Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:43:54.748275216Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:43:59.764135451Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:43:59.792579244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:43:59.792690915Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:43:59.815125594Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:43:59.815169663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:43:59.815183552Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:43:59.815194532Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:43:59.815202397Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:44:04.833224307Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:44:04.861394911Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:44:04.861482603Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:44:04.882743493Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:44:04.882787546Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:44:04.882801975Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:44:04.882814378Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:44:04.882824086Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:44:09.903948188Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:44:09.933444717Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:44:09.93354008Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:44:09.954356043Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:44:09.954398066Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:44:09.954442222Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:44:09.954453189Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:44:09.954461393Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:44:14.970643331Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:44:15.001835635Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:44:15.001955599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:44:15.02827706Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:44:15.028327108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:44:15.028342008Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:44:15.02835386Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:44:15.028362753Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:44:20.049180399Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:44:20.080103396Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:44:20.080205935Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:44:20.100692939Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:44:20.100735346Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:44:20.100750545Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:44:20.100762518Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:44:20.100771702Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:44:25.117102299Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:44:25.147004711Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:44:25.147097143Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:44:25.168593046Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:44:25.168636714Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:44:25.168650667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:44:25.168662829Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:44:25.168672489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:44:30.186273629Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:44:30.216625793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:44:30.216736322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:44:30.241817416Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:44:30.241858427Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:44:30.24187164Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:44:30.241884358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:44:30.241902869Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:44:35.260003256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:44:35.295199283Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:44:35.295311625Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:44:35.317558034Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:44:35.317604882Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:44:35.3176207Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:44:35.317638401Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:44:35.317647545Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:44:40.337494026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:44:40.365506087Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:44:40.365600954Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:44:40.389637564Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:44:40.389681573Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:44:40.389729879Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:44:40.389740192Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:44:40.389748466Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:44:45.40767032Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:44:45.437007564Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:44:45.437111413Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:44:45.461600478Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:44:45.461641674Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:44:45.461655044Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:44:45.461667378Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:44:45.461677254Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:44:50.47845655Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:44:50.511738026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:44:50.511829161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:44:50.538610963Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:44:50.53865735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:44:50.538672133Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:44:50.538683447Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:44:50.53869267Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:44:55.552137084Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:44:55.587732345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:44:55.587837524Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:44:55.611023318Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:44:55.611067644Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:44:55.611081468Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:44:55.611090601Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:44:55.611100053Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:45:00.634173566Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:45:00.663868875Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:45:00.663993154Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:45:00.684881057Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:45:00.684926362Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:45:00.684939839Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:45:00.684975222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:45:00.684986041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:45:05.700294378Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:45:05.731538235Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:45:05.731636889Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:45:05.752401233Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:45:05.752613561Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:45:05.752630133Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:45:05.752642414Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:45:10.77101311Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:45:10.800990749Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:45:10.801098707Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:45:10.825979068Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:45:10.82603009Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:45:10.826045934Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:45:10.826070485Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:45:10.826081883Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:45:15.84549277Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:45:15.873918917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:45:15.874016481Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:45:15.89593623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:45:15.895995965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:45:15.89601118Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:45:20.916727311Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:45:20.943376301Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:45:20.943490595Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:45:20.966663246Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:45:20.966707467Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:45:20.966722143Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:45:20.966734611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:45:20.96674409Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:45:25.984772341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:45:26.027003906Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:45:26.027120694Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:45:26.051406681Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:45:26.051449214Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:45:26.051465448Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:45:26.051476335Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:45:26.051486379Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:45:31.074390826Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:45:31.105208016Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:45:31.105327232Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:45:31.13094704Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:45:31.130989377Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:45:31.131002891Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:45:31.131015849Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:45:31.131025139Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:45:36.146183842Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:45:36.175959486Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:45:36.176060769Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:45:36.195315046Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:45:36.195357686Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:45:36.195371276Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:45:41.214711417Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:45:41.245251271Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:45:41.245359646Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:45:41.268334367Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:45:41.268377752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:45:41.268391076Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:45:41.268401229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:45:41.268467907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:45:46.285459553Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:45:46.315000175Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:45:46.315124117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:45:46.337665136Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:45:46.33771018Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:45:46.337725772Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:45:46.337749689Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:45:46.337758555Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:45:51.358599966Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:45:51.385724634Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:45:51.385816381Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:45:51.410654193Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:45:51.410696584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:45:51.410713136Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:45:51.410742839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:45:51.410752353Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:45:56.428620152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:45:56.459826357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:45:56.459928593Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:45:56.484499517Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:45:56.484549724Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:45:56.484564155Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:45:56.484587865Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:45:56.484596476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:46:01.506369617Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:46:01.543487774Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:46:01.543621644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:46:01.565767974Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:46:01.565812954Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:46:01.565826428Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:46:01.56595298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:46:01.565964672Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:46:06.584838698Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:46:06.612761215Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:46:06.612863327Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:46:06.638215195Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:46:06.638273505Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:46:06.638289406Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:46:06.638301135Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:46:06.638311438Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:46:11.655303159Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:46:11.68491084Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:46:11.685023054Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:46:11.708982706Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:46:11.709031161Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:46:11.709045266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:46:11.709069342Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:46:11.709078104Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:46:16.72602736Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:46:16.75560485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:46:16.755732525Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:46:16.779038702Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:46:16.779093468Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:46:16.779108391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:46:16.779118272Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:46:16.779126881Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:46:21.792391903Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:46:21.822964641Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:46:21.823056411Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:46:21.847219355Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:46:21.847280425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:46:21.847296185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:46:21.847309135Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:46:21.847319574Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:46:26.864570409Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:46:26.893450894Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:46:26.89356592Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:46:26.918035066Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:46:26.918077236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:46:26.918091019Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:46:26.918103689Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:46:26.918113454Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:46:31.941162802Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:46:31.969494505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:46:31.969576774Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:46:31.993568433Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:46:31.993993533Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:46:31.994016346Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:46:31.994052886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:46:31.994065975Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:46:37.010667446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:46:37.040952282Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:46:37.041066198Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:46:37.063769512Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:46:37.063812056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:46:37.063824706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:46:37.063835921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:46:37.063846611Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:46:42.083686161Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:46:42.113428977Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:46:42.113548387Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:46:42.134962068Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:46:42.13500648Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:46:42.135020411Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:46:42.135032751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:46:42.135042357Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:46:47.151523385Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:46:47.182893971Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:46:47.182999936Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:46:47.207863218Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:46:47.207921792Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:46:47.207937683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:46:47.207948834Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:46:47.207958728Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:46:52.227249202Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:46:52.258704614Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:46:52.258860266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:46:52.283357346Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:46:52.283805162Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:46:52.284043141Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:46:52.2845289Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:46:52.284832855Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:46:57.298091397Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:46:57.326422538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:46:57.326527298Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:46:57.349643085Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:46:57.349708921Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:46:57.349726515Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:46:57.349736268Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:46:57.34974313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:47:02.368731187Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:47:02.398864947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:47:02.399003576Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:47:02.426697682Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:47:02.426744056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:47:02.426782804Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:47:02.426793364Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:47:02.426802158Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:47:07.443376076Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:47:07.470720672Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:47:07.470840623Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:47:07.494487156Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:47:07.494531633Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:47:07.494546749Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:47:07.494559886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:47:07.494568817Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:47:12.518347717Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:47:12.550189948Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:47:12.550374348Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:47:12.574159716Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:47:12.574201002Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:47:12.574215317Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:47:12.574257272Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:47:12.574266832Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:47:17.589647775Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:47:17.620006256Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:47:17.620119048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:47:17.643305579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:47:17.643364608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:47:17.643380416Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:47:17.643391194Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:47:17.643399188Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:47:22.665301699Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:47:22.694315221Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:47:22.694430899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:47:22.716337982Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:47:22.716378584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:47:22.716391536Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:47:22.716403532Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:47:22.716413618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:47:27.733441474Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:47:27.761445645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:47:27.761563024Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:47:27.78367083Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:47:27.783714003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:47:27.783726889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:47:27.783737364Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:47:27.783746841Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:47:32.805304885Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:47:32.834797516Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:47:32.834919903Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:47:32.859260773Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:47:32.859304303Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:47:32.859317193Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:47:32.859328171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:47:32.859338851Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:47:37.875955842Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:47:37.903572314Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:47:37.90366703Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:47:37.927260177Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:47:37.927304524Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:47:37.927318374Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:47:37.927328646Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:47:37.927338173Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:47:42.943639884Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:47:42.975861614Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:47:42.975956886Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:47:43.001934265Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:47:43.001978035Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:47:43.001992884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:47:43.002004109Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:47:43.002013275Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:47:48.017788551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:47:48.049153025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:47:48.049274915Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:47:48.073586932Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:47:48.073634798Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:47:48.073650662Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:47:48.073661499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:47:48.073671029Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:47:53.092933125Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:47:53.125144795Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:47:53.125267946Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:47:53.147961931Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:47:53.148006849Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:47:53.14802116Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:47:53.148042277Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:47:53.148050856Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:47:58.166086508Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:47:58.194955059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:47:58.195071056Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:47:58.219862947Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:47:58.21992162Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:47:58.219935469Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:47:58.219945221Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:47:58.219953721Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:48:03.241025639Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:48:03.269420752Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:48:03.269517969Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:48:03.293142554Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:48:03.293530522Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:48:03.29355263Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:48:03.293590961Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:48:03.293603168Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:48:08.309541522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:48:08.340079675Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:48:08.340198553Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:48:08.365137803Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:48:08.365207454Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:48:08.365222358Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:48:08.365245724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:48:08.365255009Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:48:13.381050678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:48:13.411010367Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:48:13.411108028Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:48:13.436403309Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:48:13.436572983Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:48:13.436591968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:48:13.436604027Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:48:13.436613868Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:48:18.457229899Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:48:18.486262152Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:48:18.486370958Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:48:18.507278743Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:48:18.507334247Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:48:18.507349525Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:48:18.507361355Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:48:18.507371427Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:48:23.528275451Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:48:23.557080277Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:48:23.557183544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:48:23.581107989Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:48:23.581149756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:48:23.581164081Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:48:23.58119523Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:48:23.581204557Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:48:28.599287263Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:48:28.629280139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:48:28.629404876Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:48:28.655215194Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:48:28.655268715Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:48:28.655283091Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:48:28.655293588Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:48:28.655302468Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:48:33.67543089Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:48:33.706472548Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:48:33.706580111Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:48:33.728258703Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:48:33.728300894Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:48:33.728314258Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:48:33.728326517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:48:33.728335811Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:48:38.746013287Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:48:38.775652305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:48:38.775779234Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:48:38.798310375Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:48:38.798365165Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:48:38.798397668Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:48:38.798409105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:48:38.798417517Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:48:43.813778064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:48:43.843199353Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:48:43.843311085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:48:43.866401853Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:48:43.866443188Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:48:43.866457104Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:48:43.866468625Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:48:43.866477662Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:48:48.886559064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:48:48.914995192Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:48:48.915083953Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:48:48.93726238Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:48:48.937319366Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:48:48.937334231Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:48:48.937345206Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:48:48.937353303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:48:53.953280122Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:48:53.979273304Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:48:53.979370104Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:48:54.004316311Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:48:54.004375177Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:48:54.004390964Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:48:54.004401758Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:48:54.004410201Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:48:59.022295275Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:48:59.051918094Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:48:59.052045802Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:48:59.078417111Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:48:59.078463631Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:48:59.078479289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:48:59.078491139Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:48:59.07850063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:49:04.096202636Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:49:04.125487308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:49:04.125600152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:49:04.147182621Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:49:04.147227275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:49:04.14727066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:49:04.147300576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:49:04.147428093Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:49:09.168293707Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:49:09.19732699Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:49:09.197451433Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:49:09.221558661Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:49:09.221607764Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:49:09.221624678Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:49:09.221636626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:49:09.221646944Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:49:14.236532777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:49:14.266298509Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:49:14.266385755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:49:14.291840442Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:49:14.291883198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:49:14.291897025Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:49:14.291908991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:49:14.291918692Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:49:19.310273817Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:49:19.339115598Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:49:19.339210566Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:49:19.361491234Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:49:24.378271589Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:49:24.406892645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:49:24.407025186Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:49:24.42692302Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:49:24.426967083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:49:24.426979806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:49:24.426992094Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:49:24.427001349Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:49:29.442977405Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:49:29.47257288Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:49:29.472666316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:49:29.49318762Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:49:29.493257846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:49:29.493274006Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:49:29.493283494Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:49:29.493307559Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:49:34.507471935Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:49:34.538136201Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:49:34.538279193Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:49:34.562102683Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:49:34.562152645Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:49:39.582599176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:49:39.611433067Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:49:39.611544006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:49:39.633661265Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:49:39.63370696Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:49:39.633721936Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:49:39.633732374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:49:39.633742025Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:49:44.652737547Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:49:44.679186164Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:49:44.679311335Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:49:44.701844009Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:49:44.701886717Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:49:44.70192517Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:49:44.701936192Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:49:44.701944896Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:49:49.723317454Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:49:49.75111115Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:49:49.751214474Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:49:49.771000723Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:49:49.771060424Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:49:49.771075457Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:49:49.771086703Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:49:49.771095217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:49:54.787295809Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:49:54.818772134Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:49:54.818883987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:49:54.844124016Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:49:54.844171092Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:49:54.844185814Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:49:54.844197295Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:49:54.844206648Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:49:59.86329294Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:49:59.892598707Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:49:59.892708253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:49:59.918737661Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:49:59.918793275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:49:59.918808242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:49:59.918817827Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:49:59.918826677Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:50:04.937338419Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:50:04.966721262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:50:04.966845197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:50:04.996646249Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:50:04.996697416Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:50:04.996712706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:50:04.996724436Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:50:04.996734785Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:50:10.014277232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:50:10.043360775Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:50:10.043456153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:50:10.063924435Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:50:10.063965159Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:50:10.063979379Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:50:10.063992085Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:50:10.064000909Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:50:15.080299075Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:50:15.108703073Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:50:15.108814611Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:50:15.136063978Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:50:15.136106175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:50:15.13611953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:50:15.136131962Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:50:15.136141122Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:50:20.158279442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:50:20.186507832Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:50:20.186627326Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:50:20.208635191Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:50:20.208680007Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:50:20.208705609Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:50:20.208717877Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:50:20.208727007Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:50:25.227351838Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:50:25.257408369Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:50:25.257509213Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:50:25.279380285Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:50:25.279432458Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:50:25.279466756Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:50:25.279500787Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:50:25.279518322Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:50:30.296380358Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:50:30.326452828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:50:30.326544088Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:50:30.346501199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:50:30.346545503Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:50:30.346577775Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:50:30.3465891Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:50:30.346597233Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:50:35.364095201Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:50:35.393119872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:50:35.393210693Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:50:35.414546529Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:50:35.414589954Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:50:35.414602484Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:50:35.414636675Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:50:35.414646081Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:50:40.432139081Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:50:40.463315768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:50:40.463435701Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:50:40.488709701Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:50:40.488752554Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:50:40.488765967Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:50:40.488776487Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:50:40.488786178Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:50:45.505225569Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:50:45.539884419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:50:45.539970935Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:50:45.562433555Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:50:45.562481899Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:50:45.562496575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:50:45.562507116Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:50:45.562517215Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:50:50.579298233Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:50:50.607049963Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:50:50.607175763Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:50:50.630102621Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:50:50.630144309Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:50:55.645347334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:50:55.676039026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:50:55.676164371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:50:55.699081889Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:50:55.699123923Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:50:55.699137452Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:50:55.699149066Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:50:55.699158352Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:51:00.717290516Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:51:00.743887086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:51:00.743976262Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:51:00.764657332Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:51:00.764701308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:51:00.764715777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:51:00.764756914Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:51:00.764766276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:51:05.780336745Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:51:05.807423507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:51:05.807541054Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:51:05.834770172Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:51:05.834815269Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:51:05.834847251Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:51:05.834858577Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:51:05.834866609Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:51:10.854631279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:51:10.884298871Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:51:10.884396868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:51:10.908570535Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:51:10.908614659Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:51:10.908628183Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:51:10.908640071Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:51:10.908649036Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:51:15.924663869Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:51:15.955288598Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:51:15.955406011Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:51:15.975059433Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:51:15.975100135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:51:15.975113641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:51:15.975125993Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:51:15.975134688Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:51:20.990436563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:51:21.018719773Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:51:21.018862823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:51:21.041163825Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:51:21.041208708Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:51:21.04122436Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:51:21.041247088Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:51:21.041256675Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:51:26.060750899Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:51:26.089875105Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:51:26.089985484Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:51:26.113090573Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:51:26.113297135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:51:26.113318672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:51:26.113330607Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:51:26.113339907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:51:31.134289438Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:51:31.163297525Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:51:31.163407182Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:51:31.185262488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:51:31.185321955Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:51:31.185338792Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:51:31.185348243Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:51:31.185356651Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:51:36.19937806Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:51:36.228587414Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:51:36.228698207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:51:36.255478672Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:51:36.255519799Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:51:36.255533809Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:51:36.255544274Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:51:36.255552355Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:51:41.274309575Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:51:41.304545121Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:51:41.304664018Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:51:41.325488226Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:51:41.325531402Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:51:41.325544746Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:51:41.325557881Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:51:41.325566849Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:51:46.343769059Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:51:46.372211351Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:51:46.372354586Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:51:46.398253775Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:51:46.398295914Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:51:46.398311499Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:51:46.398322038Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:51:46.398330204Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:51:51.416285614Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:51:51.444324531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:51:51.444503909Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:51:51.46556771Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:51:51.465606573Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:51:51.465619613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:51:51.465629991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:51:51.465638276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:51:56.484287279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:51:56.514862089Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:51:56.51497338Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:51:56.53910301Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:51:56.539155692Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:51:56.539169301Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:51:56.539181653Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:51:56.539189648Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:52:01.576756085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:52:01.651662307Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:52:01.651849206Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:52:01.697762599Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:52:01.697914003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:52:01.697931215Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:52:01.697942018Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:52:01.697950677Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:52:06.714558235Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:52:06.746672546Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:52:06.746767228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:52:06.768212013Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:52:06.768269887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:52:06.76828496Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:52:06.768295894Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:52:06.768304576Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:52:11.786758996Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:52:11.818740896Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:52:11.818833233Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:52:11.842082465Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:52:11.842139612Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:52:11.84217362Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:52:11.84218434Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:52:11.842203011Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:52:16.861035864Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:52:16.890167057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:52:16.890301448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:52:16.911806577Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:52:16.911849552Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:52:16.911898531Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:52:16.911909627Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:52:16.911918547Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:52:21.932019252Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:52:21.96185621Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:52:21.96198182Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:52:21.981916305Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:52:21.981971741Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:52:21.981986203Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:52:21.981997015Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:52:21.982005308Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:52:26.997040239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:52:27.027921305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:52:27.02803606Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:52:27.048113253Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:52:27.048159217Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:52:27.048175155Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:52:27.048185926Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:52:27.0481962Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:52:32.068089112Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:52:32.099544835Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:52:32.099636288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:52:32.122723786Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:52:37.139116175Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:52:37.167813167Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:52:37.167923905Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:52:37.194122486Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:52:37.194167113Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:52:37.194182531Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:52:37.194195159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:52:37.194206217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:52:42.214284827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:52:42.244501752Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:52:42.244634787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:52:42.265255044Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:52:42.265297111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:52:42.265340975Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:52:42.265385782Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:52:42.265395692Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:52:47.28330133Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:52:47.313195917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:52:47.313301143Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:52:47.338704216Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:52:47.338744158Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:52:47.338781454Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:52:47.338802044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:52:47.338810533Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:52:52.359823343Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:52:52.389570448Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:52:52.389696744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:52:52.411817848Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:52:52.41187569Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:52:52.411907288Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:52:52.411918039Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:52:52.411937017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:52:57.429087765Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:52:57.458710139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:52:57.458820705Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:52:57.481953523Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:52:57.481993036Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:52:57.482006189Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:52:57.482017915Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:52:57.482027553Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:53:02.505064277Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:53:02.534462854Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:53:02.534576686Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:53:02.55985461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:53:02.559901745Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:53:02.559915724Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:53:02.559927177Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:53:02.559936395Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:53:07.579138063Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:53:07.607157521Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:53:07.607274617Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:53:07.62867812Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:53:07.628719797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:53:07.628733998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:53:07.628745422Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:53:07.628755528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:53:12.645284414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:53:12.675061814Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:53:12.675169393Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:53:12.700858055Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:53:12.700902625Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:53:12.700916844Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:53:12.700928601Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:53:12.700937961Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:53:17.718654954Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:53:17.749535583Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:53:17.749644764Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:53:17.769988599Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:53:17.770032668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:53:17.770045841Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:53:17.770108006Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:53:17.770118107Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:53:22.786858561Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:53:22.817462324Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:53:22.81756752Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:53:22.837201262Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:53:22.83726584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:53:22.837281361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:53:22.837292097Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:53:22.83730066Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:53:27.855857378Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:53:27.882652181Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:53:27.882758884Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:53:27.908180018Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:53:27.908270711Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:53:27.908287088Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:53:27.908298105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:53:27.908309586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:53:32.926842142Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:53:32.955837102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:53:32.95594579Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:53:32.97949901Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:53:32.979543081Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:53:32.979556762Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:53:32.979567565Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:53:32.979577146Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:53:37.998366548Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:53:38.027779131Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:53:38.02791562Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:53:38.055851684Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:53:38.055898831Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:53:38.055914022Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:53:38.055924977Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:53:38.05593223Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:53:43.076597352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:53:43.106676072Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:53:43.106783812Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:53:43.130844667Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:53:43.130890574Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:53:43.130918189Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:53:43.130929088Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:53:43.130937683Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:53:48.145337539Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:53:48.173579217Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:53:48.17368502Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:53:48.194048158Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:53:48.194110381Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:53:48.194124319Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:53:48.194133751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:53:48.19414189Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:53:53.215280196Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:53:53.246642677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:53:53.246757948Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:53:53.271422956Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:53:53.271464702Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:53:53.271477772Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:53:53.271489078Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:53:53.271498247Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:53:58.289272604Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:53:58.319196178Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:53:58.319307503Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:53:58.340096559Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:53:58.340138304Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:53:58.340150529Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:53:58.340160973Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:53:58.340169561Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:54:03.358861774Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:54:03.389478042Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:54:03.389604551Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:54:03.414714065Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:54:03.414759363Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:54:03.414788234Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:54:03.414799919Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:54:03.414808316Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:54:08.430706179Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:54:08.460116627Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:54:08.460247024Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:54:08.484073508Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:54:08.484119222Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:54:08.484132469Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:54:08.484144516Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:54:08.484154191Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:54:13.508682822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:54:13.538352319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:54:13.53845432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:54:13.563820359Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:54:13.563864494Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:54:13.563877952Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:54:13.563887991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:54:13.563897149Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:54:18.583290996Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:54:18.613318018Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:54:18.613416767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:54:18.637054682Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:54:18.63709748Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:54:18.637111728Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:54:18.637122692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:54:18.63713179Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:54:23.658080807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:54:23.689761015Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:54:23.689852323Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:54:23.710358176Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:54:23.710402658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:54:23.710417218Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:54:23.710429605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:54:23.710438621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:54:28.726598881Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:54:28.757154062Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:54:28.757288529Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:54:28.781895121Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:54:28.781941076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:54:28.781954924Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:54:28.781980416Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:54:28.781988345Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:54:33.797187203Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:54:33.827629163Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:54:33.827743341Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:54:33.850045719Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:54:33.850087286Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:54:33.850101263Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:54:33.850113467Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:54:33.850122249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:54:38.86830536Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:54:38.897779098Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:54:38.897886305Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:54:38.92145526Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:54:38.921509133Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:54:38.921522004Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:54:38.921530993Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:54:38.921539497Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:54:43.937282423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:54:43.96643273Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:54:43.966521759Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:54:43.990715873Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:54:43.990756237Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:54:43.990769847Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:54:43.990780356Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:54:43.990805101Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:54:49.010590307Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:54:49.041626226Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:54:49.041739888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:54:49.069126814Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:54:49.069169842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:54:49.069183836Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:54:49.069194171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:54:49.069202615Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:54:54.084085581Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:54:54.114447976Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:54:54.114547447Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:54:54.137390061Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:54:54.137431796Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:54:54.137445139Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:54:54.137456622Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:54:54.13746649Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:54:59.154287447Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:54:59.182306703Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:54:59.182414558Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:54:59.202953584Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:54:59.202994642Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:54:59.203009056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:54:59.203020268Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:54:59.203028405Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:55:04.222008182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:55:04.250941186Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:55:04.251040877Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:55:04.27519259Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:55:04.275267817Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:55:04.27528362Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:55:04.275319162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:55:04.275328604Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:55:09.290751602Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:55:09.321539407Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:55:09.321654162Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:55:09.345794834Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:55:09.345837518Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:55:09.34585043Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:55:09.345862072Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:55:09.345872508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:55:14.363253635Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:55:14.393388608Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:55:14.393486167Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:55:14.416352352Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:55:14.416394761Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:55:14.416407815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:55:14.416535069Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:55:14.416548043Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:55:19.432945042Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:55:19.461310518Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:55:19.46142314Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:55:19.484071998Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:55:19.484113736Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:55:19.484171037Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:55:19.484182787Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:55:19.484191526Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:55:19.484334212Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T20:55:19.484499322Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T20:55:24.497925892Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:55:24.530054717Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:55:24.530186723Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:55:24.556745944Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:55:24.556803158Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:55:24.55681865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:55:24.556829006Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:55:24.556837225Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:55:29.574224764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:55:29.604933464Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:55:29.605045077Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:55:29.627031554Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:55:29.627074606Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:55:29.627087994Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:55:29.627109596Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:55:29.627118219Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:55:34.642602723Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:55:34.673669564Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:55:34.673797495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:55:34.699211975Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:55:34.699280824Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:55:34.699295408Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:55:34.699305517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:55:34.699314847Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:55:39.716647404Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:55:39.746755008Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:55:39.746844786Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:55:39.768786619Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:55:39.768831433Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:55:39.768845121Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:55:39.768866871Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:55:39.768876079Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:55:44.786265217Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:55:44.815231684Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:55:44.815368128Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:55:44.839003052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:55:44.839046104Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:55:44.839059504Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:55:44.839080793Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:55:44.839089249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:55:49.852914706Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:55:49.881934753Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:55:49.882052371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:55:49.902782667Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:55:49.902840338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:55:49.902865981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:55:49.902875827Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:55:49.902884701Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:55:54.919301979Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:55:54.947312216Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:55:54.947402756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:55:54.967807405Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:55:54.967847539Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:55:54.967884979Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:55:54.967895076Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:55:54.967903159Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:55:59.986205995Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:56:00.021116059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:56:00.021261635Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:56:00.083091948Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:56:00.083140091Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:56:00.083154592Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:56:00.083204638Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:56:00.083214209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:56:05.101984076Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:56:05.129959041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:56:05.130072749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:56:05.151221248Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:56:05.151282437Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:56:05.151298237Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:56:05.151307877Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:56:05.15131756Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:56:10.169868023Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:56:10.201427523Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:56:10.201541406Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:56:10.226693061Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:56:10.226754501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:56:10.226769309Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:56:10.22677909Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:56:10.226787342Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:56:15.243311947Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:56:15.270659919Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:56:15.270776781Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:56:15.292020365Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:56:15.29206189Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:56:15.292091583Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:56:15.292111799Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:56:15.292120183Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:56:20.306978916Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:56:20.337100701Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:56:20.337193185Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:56:20.357573011Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:56:20.357615557Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:56:20.357629687Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:56:20.357649516Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:56:20.357658332Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:56:25.374603413Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:56:25.404840747Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:56:25.404955224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:56:25.426583943Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:56:25.426653086Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:56:25.426667689Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:56:25.426677307Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:56:25.426685338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:56:30.449295823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:56:30.4775644Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:56:30.47767163Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:56:30.501686789Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:56:30.501729236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:56:30.501743801Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:56:30.501755435Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:56:30.50176454Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:56:35.522138966Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:56:35.552321858Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:56:35.552413436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:56:35.576411622Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:56:35.576579621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:56:35.576595775Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:56:35.576606421Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:56:35.576615058Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:56:40.595284314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:56:40.624137433Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:56:40.624256168Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:56:40.645061735Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:56:40.645101801Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:56:40.645115265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:56:40.64512652Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:56:40.645136Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:56:45.662375948Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:56:45.692395097Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:56:45.692593664Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:56:45.718565303Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:56:45.718609924Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:56:45.718623855Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:56:45.718634081Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:56:45.718642036Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:56:50.73938184Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:56:50.768868531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:56:50.76895967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:56:50.79478959Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:56:50.794832609Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:56:50.794846668Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:56:50.794858293Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:56:50.794867473Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:56:55.812084079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:56:55.842716036Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:56:55.842799599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:56:55.862669674Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:56:55.8627137Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:56:55.862726943Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:56:55.862748704Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:56:55.862757372Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:57:00.883287777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:57:00.912670094Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:57:00.912763744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:57:00.933948098Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:57:00.933994043Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:57:00.934009192Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:57:00.934020684Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:57:00.934029563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:57:05.948367559Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:57:05.978646256Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:57:05.978741859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:57:06.00425711Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:57:06.004321623Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:57:06.00433652Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:57:06.004347249Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:57:06.004355984Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:57:11.022336344Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:57:11.052971587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:57:11.053091184Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:57:11.074169111Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:57:11.074218548Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:57:11.074244963Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:57:11.074257621Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:57:11.074267131Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:57:16.09228062Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:57:16.121588034Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:57:16.121703054Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:57:16.146809884Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:57:16.147276234Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:57:16.147524817Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:57:16.147920263Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:57:16.148181699Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:57:21.164441925Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:57:21.193337301Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:57:21.193446622Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:57:21.212986044Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:57:21.213046967Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:57:21.213062008Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:57:21.213071468Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:57:21.21307982Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:57:26.231276917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:57:26.25962111Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:57:26.259750142Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:57:26.282419781Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:57:26.282471225Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:57:26.282484986Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:57:26.282495528Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:57:26.282503428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:57:31.30362505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:57:31.334995447Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:57:31.335100499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:57:31.359327876Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:57:31.359368462Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:57:31.359382383Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:57:31.359417083Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:57:31.359425869Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:57:36.372506882Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:57:36.404053068Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:57:36.404144109Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:57:36.429744179Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:57:36.429789259Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:57:36.42980288Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:57:36.429814931Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:57:36.429824834Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:57:41.451448495Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:57:41.480973245Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:57:41.481079315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:57:41.502631033Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:57:41.502688699Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:57:41.502704702Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:57:41.502796359Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:57:41.502811932Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:57:46.522508033Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:57:46.550847476Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:57:46.550940022Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:57:46.571143727Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:57:46.571184243Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:57:46.571200166Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:57:46.571213753Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:57:46.571225306Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:57:51.588277729Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:57:51.616245988Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:57:51.616341539Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:57:51.640727046Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:57:51.640771981Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:57:51.640786311Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:57:51.640798195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:57:51.640809167Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:57:56.654177579Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:57:56.683030088Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:57:56.683121977Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:57:56.703514224Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:57:56.703556997Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:57:56.70359427Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:57:56.703605069Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:57:56.703613769Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:58:01.719296676Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:58:01.74765535Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:58:01.747770607Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:58:01.770077139Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:58:01.770121066Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:58:01.770136144Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:58:01.770147934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:58:01.770157137Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:58:06.786299267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:58:06.816009719Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:58:06.816101828Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:58:06.842132147Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:58:06.842173698Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:58:06.842187043Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:58:06.842198642Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:58:06.842207642Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:58:11.861776637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:58:11.894056856Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:58:11.894148347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:58:11.914350183Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:58:11.914390939Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:58:11.91440553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:58:11.914417633Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:58:11.914425831Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:58:16.932350033Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:58:16.959776851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:58:16.959909258Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:58:16.982546655Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:58:16.982589381Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:58:16.982603808Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:58:16.982615501Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:58:16.982624667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:58:21.997287902Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:58:22.028066075Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:58:22.028179264Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:58:22.048119532Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:58:22.048178812Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:58:22.048193655Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:58:22.048203649Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:58:22.04821202Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:58:27.065008384Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:58:27.095164123Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:58:27.095282219Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:58:27.120962791Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:58:27.121005343Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:58:27.12102122Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:58:27.121073546Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:58:27.121082662Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:58:32.142268415Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:58:32.176027696Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:58:32.176139472Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:58:32.202734533Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:58:32.202795042Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:58:32.202809634Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:58:32.202819544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:58:32.202827717Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:58:37.217296167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:58:37.247556035Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:58:37.247672616Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:58:37.27116257Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:58:37.271205889Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:58:37.271220181Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:58:37.271230864Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:58:37.271254386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:58:42.291780133Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:58:42.323609784Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:58:42.323713282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:58:42.345780931Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:58:42.34582167Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:58:42.345835057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:58:42.345846662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:58:42.345855428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:58:47.362727235Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:58:47.39303058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:58:47.393121479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:58:47.416023433Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:58:47.416065504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:58:47.416078883Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:58:47.416090733Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:58:47.416100303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:58:52.434278708Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:58:52.46250748Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:58:52.462638132Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:58:52.486451843Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:58:52.486494106Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:58:52.486507836Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:58:52.486519017Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:58:52.486528383Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:58:57.502065656Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:58:57.532921346Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:58:57.533012952Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:58:57.558517813Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:58:57.558558947Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:58:57.558572076Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:58:57.558585075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:58:57.558594372Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:59:02.576988355Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:59:02.607344199Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:59:02.60788108Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:59:02.628630335Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:59:02.628672722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:59:02.628686379Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:59:02.628727711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:59:02.628736845Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:59:07.644123343Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:59:07.672770629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:59:07.672874434Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:59:07.698354619Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:59:07.698398007Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:59:07.698413086Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:59:07.698424573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:59:07.698433628Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:59:12.718378493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:59:12.749410112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:59:12.749505348Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:59:12.775740372Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:59:12.775801947Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:59:12.775816879Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:59:12.775826046Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:59:12.775834228Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:59:17.795436751Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:59:17.823233569Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:59:17.823362385Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:59:17.843330256Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:59:17.843373229Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:59:17.843387077Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:59:17.843396803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:59:17.843405601Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:59:22.859069554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:59:22.887499737Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:59:22.887616584Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:59:22.908367988Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:59:22.908487794Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:59:22.908506982Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:59:22.908518079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:59:22.908528316Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:59:27.923286676Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:59:27.952787234Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:59:27.952905944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:59:27.976258402Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:59:27.976337287Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:59:27.976351649Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:59:27.976361864Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:59:27.976370782Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:59:32.996895403Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:59:33.026917653Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:59:33.027020243Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:59:33.053453127Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:59:33.053501057Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:59:33.053514745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:59:33.053525836Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:59:33.053535359Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:59:38.072449468Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:59:38.101690622Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:59:38.101800712Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:59:38.12429475Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:59:38.124335804Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:59:38.124350213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:59:38.124361613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:59:38.124370938Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:59:43.145944862Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:59:43.1748484Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:59:43.174981577Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:59:43.19588856Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:59:48.214268158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:59:48.242364442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:59:48.242469619Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:59:48.268057357Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:59:48.268095722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:59:48.26810792Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:59:48.268118301Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:59:48.268129004Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:59:53.284609528Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:59:53.312563349Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:59:53.312688807Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:59:53.332752261Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:59:53.332794649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:59:53.332808583Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:59:53.332820195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:59:53.332830941Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T20:59:58.350768515Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T20:59:58.379784626Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T20:59:58.379891531Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T20:59:58.39982357Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T20:59:58.399866202Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T20:59:58.399879624Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T20:59:58.399907552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T20:59:58.39991681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:00:03.443071431Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:00:03.55432139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:00:03.554428228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:00:03.67471159Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:00:03.674777796Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:00:03.674793099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:00:03.67480371Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:00:03.674813069Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:00:08.707549128Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:00:08.738989871Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:00:08.739106864Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:00:08.766834518Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:00:08.766879215Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:00:08.76689255Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:00:08.766902748Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:00:08.766910855Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:00:13.783618232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:00:13.812771855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:00:13.812883791Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:00:13.838899632Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:00:13.838943891Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:00:13.838957952Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:00:13.838969129Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:00:13.838978626Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:00:18.855662872Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:00:18.884684848Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:00:18.884798796Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:00:18.907276873Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:00:18.907358747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:00:18.907373709Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:00:18.907383499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:00:18.907392292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:00:23.923342718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:00:23.952881283Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:00:23.952996879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:00:23.975805067Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:00:23.975848738Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:00:23.975862572Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:00:23.975873821Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:00:23.97588217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:00:28.993005282Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:00:29.022603918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:00:29.022697616Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:00:29.044956617Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:00:29.044997474Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:00:29.045043269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:00:29.045055113Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:00:29.045064369Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:00:34.061366506Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:00:34.090751942Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:00:34.090843611Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:00:34.112110939Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:00:34.112169608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:00:34.112183772Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:00:34.112359662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:00:34.112376045Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:00:39.128499201Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:00:39.15948738Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:00:39.159581078Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:00:39.183340609Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:00:39.183380251Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:00:39.18339412Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:00:39.18343126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:00:39.183440159Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:00:44.199880893Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:00:44.230999279Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:00:44.231106966Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:00:44.251428237Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:00:44.251486192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:00:44.251521506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:00:44.251603856Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:00:44.251615531Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:00:49.275496627Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:00:49.304193921Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:00:49.304299831Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:00:49.325153492Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:00:49.325195974Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:00:49.325208706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:00:49.325261554Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:00:49.325270455Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:00:54.339942727Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:00:54.36960091Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:00:54.369705758Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:00:54.392638589Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:00:54.392683061Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:00:54.392699569Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:00:54.392721746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:00:54.392730773Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:00:59.411020322Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:00:59.441438276Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:00:59.441556855Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:00:59.463335147Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:00:59.463374348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:00:59.463388095Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:00:59.463399168Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:00:59.463408531Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:01:04.477332894Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:01:04.508050886Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:01:04.508181895Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:01:04.52909189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:01:04.529157803Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:01:04.529174777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:01:04.529184492Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:01:04.529204441Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:01:09.547833829Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:01:09.576362495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:01:09.576540891Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:01:09.597636275Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:01:09.59768895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:01:09.597717076Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:01:09.597791833Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:01:09.597802928Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:01:14.616428446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:01:14.646046619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:01:14.646140158Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:01:14.667853823Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:01:14.667897316Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:01:14.667911374Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:01:14.667922582Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:01:14.66793185Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:01:19.686531198Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:01:19.717142406Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:01:19.71726631Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:01:19.740167174Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:01:19.740208899Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:01:19.740221962Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:01:19.740245171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:01:19.740254442Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:01:24.755861536Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:01:24.784682852Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:01:24.7848095Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:01:24.806105643Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:01:24.806147903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:01:24.806161862Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:01:24.806198701Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:01:24.806208962Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:01:29.824563059Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:01:29.853523657Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:01:29.853645075Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:01:29.87580689Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:01:29.87585433Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:01:29.875868612Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:01:29.875878604Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:01:29.875888916Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:01:34.891424209Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:01:34.922041643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:01:34.922134858Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:01:34.94840061Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:01:34.948529751Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:01:34.948544654Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:01:34.948552849Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:01:34.948559965Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:01:39.966275356Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:01:39.995014705Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:01:39.995105601Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:01:40.019572282Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:01:40.019618939Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:01:40.019658279Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:01:40.019688705Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:01:40.019698019Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:01:45.03594574Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:01:45.067643484Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:01:45.067767171Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:01:45.090715131Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:01:50.109050088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:01:50.139408747Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:01:50.139594278Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:01:50.160529898Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:01:50.160588067Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:01:50.1606016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:01:50.160611069Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:01:50.160621351Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:01:55.177561286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:01:55.208727126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:01:55.208822486Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:01:55.232771888Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:01:55.232834832Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:01:55.232850637Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:01:55.232861297Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:01:55.232898866Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:02:00.255288815Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:02:00.284548695Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:02:00.284670078Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:02:00.305377484Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:02:00.305420542Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:02:00.305436594Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:02:00.305461455Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:02:00.305470703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:02:05.323293177Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:02:05.352498631Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:02:05.352967341Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:02:05.374375149Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:02:05.374437653Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:02:05.374453157Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:02:05.37446269Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:02:05.374470887Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:02:10.395274127Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:02:10.425447556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:02:10.425554221Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:02:10.448926075Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:02:10.448970256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:02:10.448984244Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:02:10.448996839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:02:10.449006845Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:02:15.464569383Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:02:15.494611668Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:02:15.494703214Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:02:15.515059371Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:02:15.515106041Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:02:15.515120876Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:02:15.515141635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:02:15.515151701Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:02:20.536970754Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:02:20.565746881Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:02:20.565847474Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:02:20.589831871Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:02:20.589876154Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:02:20.589889976Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:02:20.589900638Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:02:20.589909788Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:02:25.605720188Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:02:25.636435213Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:02:25.636591961Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:02:25.657742031Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:02:25.657781761Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:02:25.657795799Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:02:25.657807154Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:02:25.657815579Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:02:30.681183931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:02:30.712516034Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:02:30.712628311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:02:30.732741812Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:02:30.732786669Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:02:30.732801278Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:02:30.732811393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:02:30.732821349Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:02:35.74507761Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:02:35.771850822Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:02:35.771960362Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:02:35.791643506Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:02:35.791682944Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:02:35.791697246Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:02:35.791708481Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:02:35.791716612Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:02:40.80795768Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:02:40.83891734Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:02:40.839020955Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:02:40.860402337Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:02:40.860581971Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:02:40.860597567Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:02:40.860609073Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:02:40.860618177Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:02:45.879032979Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:02:45.909350895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:02:45.909480426Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:02:45.930708591Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:02:45.9307728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:02:45.930788314Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:02:45.930798666Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:02:45.930806765Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:02:50.94757737Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:02:50.978819166Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:02:50.978941092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:02:51.006288792Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:02:51.006335259Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:02:51.006349228Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:02:51.006359905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:02:51.006368711Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:02:56.023596175Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:02:56.05462057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:02:56.054729249Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:02:56.076765684Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:02:56.077177336Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:02:56.077383625Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:02:56.077582712Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:02:56.077873735Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:03:01.095150718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:03:01.125223442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:03:01.125362923Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:03:01.148010241Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:03:01.148058914Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:03:01.148072406Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:03:01.148082396Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:03:01.148092359Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:03:06.165337305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:03:06.1931401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:03:06.193278953Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:03:06.216158848Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:03:06.216202683Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:03:06.216217778Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:03:06.216228984Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:03:06.216249086Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:03:11.233289896Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:03:11.263740118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:03:11.26385137Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:03:11.284862999Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:03:11.284908653Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:03:11.284924246Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:03:11.284936977Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:03:11.284945466Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:03:16.302352314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:03:16.331051551Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:03:16.331158085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:03:16.35474241Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:03:16.35478533Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:03:16.354798519Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:03:16.354809696Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:03:16.354819327Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:03:21.374203062Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:03:21.403447649Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:03:21.403528674Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:03:21.424773427Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:03:21.42481438Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:03:21.424828643Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:03:21.424838866Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:03:21.424847362Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:03:26.444338321Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:03:26.472132597Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:03:26.472278339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:03:26.496112869Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:03:26.496153561Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:03:26.496166556Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:03:26.49617722Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:03:26.496186516Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:03:31.514915408Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:03:31.543259834Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:03:31.543341499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:03:31.564201766Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:03:31.564265131Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:03:31.5642805Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:03:31.56429048Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:03:31.564298906Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:03:36.579868095Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:03:36.608375002Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:03:36.608610548Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:03:36.631334464Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:03:36.631376957Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:03:36.631392601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:03:36.631404114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:03:36.631413593Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:03:41.649997154Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:03:41.6794243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:03:41.679517514Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:03:41.703651579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:03:41.703695345Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:03:41.703719418Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:03:41.703733456Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:03:41.703743728Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:03:46.724024892Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:03:46.75214452Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:03:46.752261119Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:03:46.772988352Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:03:46.773030039Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:03:46.7730444Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:03:46.77307882Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:03:46.773087884Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:03:51.789618167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:03:51.816873476Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:03:51.816954931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:03:51.84671756Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:03:51.846764891Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:03:51.846779156Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:03:51.846812623Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:03:51.846824565Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:03:56.862540317Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:03:56.891749278Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:03:56.891853871Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:03:56.914059718Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:03:56.914102336Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:03:56.914117428Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:03:56.914127809Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:03:56.914136854Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:04:01.935955094Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:04:01.99783328Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:04:01.997947555Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:04:02.070351894Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:04:02.07040134Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:04:02.070417877Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:04:02.070445089Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:04:02.07045409Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:04:07.088564387Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:04:07.116260857Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:04:07.11635517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:04:07.138824072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:04:07.138885171Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:04:07.138899703Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:04:07.138909673Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:04:07.138918102Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:04:12.159936691Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:04:12.189880339Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:04:12.18997662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:04:12.210163358Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:04:12.210294324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:04:12.210336522Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:04:12.210366496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:04:12.210375631Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:04:17.229284973Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:04:17.258313578Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:04:17.25842979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:04:17.282975474Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:04:17.28301865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:04:17.28303252Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:04:17.283085874Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:04:17.283096578Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:04:22.300347126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:04:22.331678886Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:04:22.331800562Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:04:22.355916556Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:04:22.355965645Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:04:22.355981347Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:04:22.356011727Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:04:22.356023724Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:04:27.375174361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:04:27.402819727Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:04:27.402939439Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:04:27.423900697Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:04:27.423942319Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:04:27.423980051Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:04:27.42400882Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:04:27.424019019Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:04:32.440270622Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:04:32.469625916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:04:32.469735943Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:04:32.49127493Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:04:32.491318773Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:04:32.491334355Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:04:32.49134655Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:04:32.491355243Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:04:37.509286314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:04:37.539659006Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:04:37.539767626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:04:37.56134123Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:04:37.56138303Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:04:37.561397248Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:04:37.561407982Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:04:37.561416984Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:04:42.579849231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:04:42.609996507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:04:42.610113325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:04:42.634211575Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:04:42.634270265Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:04:42.634286375Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:04:42.634297431Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:04:42.634304549Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:04:47.652412536Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:04:47.683059273Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:04:47.683194491Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:04:47.704156592Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:04:47.704211326Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:04:47.704226499Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:04:47.704249315Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:04:47.704258623Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:04:52.720292615Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:04:52.749648616Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:04:52.74974609Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:04:52.77331049Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:04:52.773358063Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:04:52.773371267Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:04:52.773383885Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:04:52.773393481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:04:57.788207603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:04:57.818346765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:04:57.818448167Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:04:57.839213256Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:04:57.839281845Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:04:57.839296331Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:04:57.839306846Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:04:57.839314957Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:05:02.860335071Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:05:02.886398319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:05:02.886493368Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:05:02.911366557Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:05:02.911412445Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:05:02.911425833Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:05:02.911435866Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:05:02.911444226Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:05:07.928409724Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:05:07.956602929Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:05:07.95672464Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:05:07.980846572Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:05:07.980890465Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:05:07.980906642Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:05:07.980918171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:05:07.980927682Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:05:12.994780824Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:05:13.0262833Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:05:13.026377403Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:05:13.052594185Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:05:13.052643809Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:05:13.052660022Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:05:13.052689348Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:05:13.052698913Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:05:18.070332254Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:05:18.101627661Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:05:18.101741974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:05:18.122044911Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:05:18.122089146Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:05:18.122104658Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:05:18.122127073Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:05:18.122139101Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:05:23.1472765Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:05:23.183211069Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:05:23.183314651Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:05:23.204371115Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:05:23.204555646Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:05:23.204577353Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:05:23.20458916Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:05:23.204598792Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:05:28.219166639Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:05:28.250880008Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:05:28.251057381Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:05:28.275495041Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:05:28.275535693Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:05:28.275549708Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:05:28.275561584Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:05:28.275570673Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:05:33.293167135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:05:33.320319419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:05:33.320644817Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:05:33.345141641Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:05:33.345182545Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:05:33.34519791Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:05:33.345209761Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:05:33.345218695Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:05:38.359948526Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:05:38.388563144Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:05:38.388652157Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:05:38.409366966Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:05:38.409427341Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:05:38.409442519Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:05:38.409452284Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:05:38.409460361Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:05:43.427763845Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:05:43.456963865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:05:43.457081409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:05:43.482062773Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:05:43.482105432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:05:43.48212005Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:05:43.482132527Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:05:43.48214151Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:05:48.502362652Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:05:48.533809335Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:05:48.533907989Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:05:48.557752002Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:05:48.557797504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:05:53.576276767Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:05:53.605984529Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:05:53.606095164Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:05:53.630999545Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:05:53.631040376Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:05:53.631054019Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:05:53.631065706Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:05:53.631074901Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:05:58.648549776Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:05:58.677684254Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:05:58.677796609Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:05:58.702102372Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:05:58.70214575Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:05:58.702159063Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:06:03.72057547Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:06:03.750900315Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:06:03.751024798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:06:03.776735574Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:06:03.776783489Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:06:03.776798074Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:06:03.77681076Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:06:03.776822031Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:06:08.795284102Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:06:08.825419164Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:06:08.825518691Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:06:08.846100569Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:06:08.846143593Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:06:08.846156962Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:06:08.846169608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:06:08.846178525Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:06:13.860304515Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:06:13.89196248Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:06:13.892066811Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:06:13.913252205Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:06:13.913294499Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:06:13.913308991Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:06:13.91332905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:06:13.913337508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:06:18.933669308Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:06:18.961905287Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:06:18.962010218Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:06:18.984774231Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:06:18.984830681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:06:18.984846161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:06:18.984857104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:06:18.984865241Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:06:24.000305644Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:06:24.030542218Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:06:24.030643009Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:06:24.051553738Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:06:24.051605942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:06:24.051620255Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:06:24.051651573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:06:24.051661613Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:06:29.070786524Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:06:29.101475679Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:06:29.101580987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:06:29.126734271Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:06:29.126779616Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:06:29.126793683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:06:29.126805825Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:06:29.12681459Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:06:34.14145594Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:06:34.170641897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:06:34.170743275Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:06:34.191686083Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:06:34.19172896Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:06:34.191760566Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:06:34.191770425Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:06:34.1917787Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:06:39.21127246Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:06:39.24234518Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:06:39.242451377Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:06:39.265514676Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:06:39.265557452Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:06:39.265571715Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:06:39.265612185Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:06:39.265622288Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:06:44.2822961Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:06:44.311820425Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:06:44.311913749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:06:44.336767615Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:06:44.336810515Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:06:44.336826243Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:06:44.336847514Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:06:44.336857807Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:06:49.356283011Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:06:49.384370621Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:06:49.384530306Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:06:49.409563461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:06:49.409608589Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:06:49.409623726Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:06:49.409635081Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:06:49.409645255Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:06:54.42761098Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:06:54.455276184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:06:54.455388585Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:06:54.475429933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:06:54.475476895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:06:54.47549106Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:06:54.475501497Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:06:54.475510085Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:06:59.494295553Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:06:59.523227009Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:06:59.523347088Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:06:59.545337353Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:06:59.545388325Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:06:59.545402915Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:06:59.545414253Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:06:59.545425232Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:07:04.563283954Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:07:04.590707684Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:07:04.590816343Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:07:04.613144971Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:07:04.613187046Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:07:04.613201957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:07:04.613214139Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:07:04.613223628Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:07:09.631953931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:07:09.661558729Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:07:09.66165635Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:07:09.683184547Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:07:09.683230607Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:07:09.683258512Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:07:09.683268752Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:07:09.683276795Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:07:14.700384279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:07:14.730998369Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:07:14.73110802Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:07:14.753573746Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:07:14.753616756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:07:14.753630077Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:07:14.753639661Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:07:14.753647758Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:07:19.775564343Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:07:19.805188327Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:07:19.805311463Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:07:19.831736037Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:07:19.831793077Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:07:19.831808058Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:07:19.831819166Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:07:19.831827588Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:07:24.849280488Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:07:24.877871596Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:07:24.877982483Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:07:24.901751313Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:07:24.901792466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:07:24.901806417Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:07:24.901817376Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:07:24.901826605Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:07:29.918771635Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:07:29.948804718Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:07:29.948912476Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:07:29.973476398Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:07:29.973522232Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:07:29.973536485Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:07:29.973548579Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:07:29.973558013Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:07:34.989274887Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:07:35.020419122Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:07:35.020625746Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:07:35.045130642Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:07:35.045174849Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:07:35.045188435Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:07:35.045199104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:07:35.045207912Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:07:40.058616135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:07:40.089369247Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:07:40.089482582Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:07:40.114119445Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:07:40.114163499Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:07:40.114176587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:07:40.114187857Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:07:40.114196913Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:07:45.130285338Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:07:45.161859073Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:07:45.162006855Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:07:45.183544008Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:07:45.18358839Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:07:45.183601568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:07:45.183612171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:07:45.183620425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:07:50.198997007Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:07:50.229952799Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:07:50.230044562Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:07:50.250109048Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:07:50.250149562Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:07:50.250187267Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:07:50.250198579Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:07:50.250207417Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:07:55.264548139Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:07:55.294852587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:07:55.294945787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:07:55.314989997Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:07:55.315046778Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:07:55.315060171Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:07:55.315070625Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:07:55.315078652Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:08:00.333325308Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:08:00.373079179Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:08:00.373177603Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:08:00.398431478Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:08:00.398487967Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:08:00.398514211Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:08:00.398526643Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:08:00.398535244Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:08:05.41601085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:08:05.448008019Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:08:05.448091826Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:08:05.47225333Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:08:05.472317375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:08:05.472332359Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:08:05.472342945Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:08:05.472351525Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:08:10.492166874Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:08:10.522631615Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:08:10.522751972Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:08:10.543849366Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:08:10.543899611Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:08:10.543933584Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:08:10.543999427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:08:10.544064189Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:08:15.559772357Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:08:15.589817338Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:08:15.589917677Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:08:15.614510329Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:08:15.614550735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:08:15.614564471Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:08:15.614575539Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:08:15.614588688Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:08:20.633305477Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:08:20.663587718Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:08:20.663713342Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:08:20.685642819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:08:20.685697302Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:08:20.685712265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:08:20.685723513Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:08:20.685732185Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:08:25.702650797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:08:25.731244817Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:08:25.731357005Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:08:25.754205923Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:08:25.754260155Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:08:25.754273794Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:08:25.7542844Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:08:25.754292829Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:08:30.772974043Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:08:30.803968397Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:08:30.804059944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:08:30.826186998Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:08:30.826228642Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:08:30.826253957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:08:30.826266171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:08:30.826274959Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:08:35.841339744Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:08:35.871696177Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:08:35.871816569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:08:35.897038651Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:08:35.897080445Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:08:35.897096188Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:08:35.897152082Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:08:35.897162344Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:08:40.918108881Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:08:40.950171368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:08:40.950285974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:08:40.971814732Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:08:40.971855356Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:08:40.971888021Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:08:40.971898949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:08:40.971907292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:08:45.99227859Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:08:46.023997947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:08:46.02412292Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:08:46.046632925Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:08:46.04667398Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:08:46.046688795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:08:46.046700111Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:08:46.046708683Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:08:51.066255751Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:08:51.094801426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:08:51.094909373Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:08:51.118956262Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:08:51.119000466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:08:56.137461105Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:08:56.166208608Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:08:56.166327934Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:08:56.186419907Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:08:56.186462968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:08:56.18647582Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:08:56.186486671Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:09:01.205855782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:09:01.249863913Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:09:01.249998996Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:09:01.306205312Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:09:01.30634698Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:09:01.306362663Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:09:01.306373538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:09:01.306382024Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:09:06.324229614Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:09:06.355620829Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:09:06.355736242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:09:06.378192538Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:09:06.378267221Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:09:06.378282411Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:09:06.378292436Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:09:06.37830074Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:09:11.39474767Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:09:11.424393566Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:09:11.424579397Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:09:11.44977481Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:09:11.449816582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:09:11.449830612Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:09:11.449842024Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:09:11.449851045Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:09:16.470751692Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:09:16.501116126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:09:16.501208773Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:09:16.525261651Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:09:16.525321618Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:09:16.525338283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:09:16.525366801Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:09:16.525375329Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:09:21.541211967Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:09:21.569856796Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:09:21.569987862Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:09:21.591193296Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:09:21.591248816Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:09:21.591262713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:09:21.591273436Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:09:21.591281497Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:09:26.605174994Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:09:26.633788083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:09:26.633916386Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:09:26.657142131Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:09:26.657192525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:09:26.657206413Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:09:26.65721648Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:09:26.657224939Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:09:31.678378408Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:09:31.711079629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:09:31.711200855Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:09:31.734834111Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:09:31.734878371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:09:31.734893289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:09:31.73490472Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:09:31.734914Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:09:36.75146955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:09:36.782957132Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:09:36.783064995Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:09:36.806671414Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:09:36.806716171Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:09:36.806729902Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:09:36.806741541Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:09:36.806751716Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:09:41.825410637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:09:41.855441256Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:09:41.855529624Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:09:41.877490559Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:09:41.877536658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:09:41.877553332Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:09:41.877565041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:09:41.877573924Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:09:46.893027201Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:09:46.923629194Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:09:46.923750857Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:09:46.947339092Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:09:46.947379414Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:09:46.947392964Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:09:46.94740565Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:09:46.947415155Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:09:51.966270502Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:09:51.995638878Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:09:51.995727313Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:09:52.01708537Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:09:52.01715548Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:09:52.017169665Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:09:52.017180373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:09:52.017188911Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:09:57.033274641Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:09:57.064020863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:09:57.06412836Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:09:57.086555892Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:09:57.086608569Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:09:57.086623032Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:09:57.086633347Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:09:57.086642071Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:10:02.129047345Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:10:02.245076009Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:10:02.245252913Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:10:02.34267357Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:10:02.342725692Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:10:02.342740225Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:10:02.342751482Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:10:02.342760358Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:10:07.367710126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:10:07.398020256Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:10:07.398148497Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:10:07.42253353Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:10:07.422599565Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:10:07.422613935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:10:07.422623932Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:10:07.422632048Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:10:12.440290916Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:10:12.469223532Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:10:12.469356823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:10:12.491606931Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:10:12.491662853Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:10:12.491677745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:10:12.491688595Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:10:12.491697278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:10:17.512192718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:10:17.542174264Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:10:17.542279767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:10:17.566301859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:10:17.56634478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:10:17.56635806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:10:17.566378315Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:10:17.566387105Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:10:22.579941731Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:10:22.610329566Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:10:22.610454295Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:10:22.636053953Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:10:22.636101812Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:10:27.652273664Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:10:27.681418656Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:10:27.681515542Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:10:27.706686828Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:10:27.706742727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:10:27.706756178Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:10:27.706787376Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:10:27.706796404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:10:32.725291799Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:10:32.755208621Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:10:32.75533195Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:10:32.779752395Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:10:32.779798999Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:10:32.779813633Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:10:32.779825029Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:10:32.779833876Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:10:37.796696553Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:10:37.827008951Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:10:37.827098819Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:10:37.85240692Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:10:37.852545596Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:10:37.852562394Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:10:37.852598727Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:10:37.85260833Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:10:42.866059377Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:10:42.892667426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:10:42.892763535Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:10:42.915557392Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:10:42.915602726Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:10:42.915616092Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:10:42.915627707Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:10:42.915636746Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:10:47.934297285Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:10:47.96220918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:10:47.962337929Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:10:47.984205641Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:10:47.984260958Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:10:47.984275997Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:10:47.984300382Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:10:47.984308962Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:10:53.00429187Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:10:53.035213772Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:10:53.035337379Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:10:53.056863803Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:10:53.05691765Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:10:53.05693333Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:10:53.056944559Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:10:53.056952769Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:10:58.074283328Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:10:58.104808788Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:10:58.104930085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:10:58.129745507Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:10:58.129801697Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:10:58.129817089Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:10:58.129826867Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:10:58.129835779Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:11:03.147682971Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:11:03.177971285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:11:03.178067638Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:11:03.202831119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:11:03.202892939Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:11:03.202907217Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:11:03.202916186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:11:03.202924359Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:11:08.221136112Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:11:08.251803435Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:11:08.251894378Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:11:08.277855263Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:11:08.277901989Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:11:08.277917116Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:11:08.277931689Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:11:08.277942544Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:11:13.301526593Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:11:13.328398208Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:11:13.328548333Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:11:13.351284455Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:11:13.35133077Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:11:13.35134669Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:11:13.35135819Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:11:13.351367075Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:11:18.372177482Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:11:18.400800146Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:11:18.400919093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:11:18.425433321Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:11:18.425489308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:11:18.425504859Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:11:18.425515108Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:11:18.425523036Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:11:23.447264484Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:11:23.476187759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:11:23.476293722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:11:23.501447236Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:11:23.501492663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:11:23.501506733Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:11:23.501519741Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:11:23.501529719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:11:28.517429428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:11:28.549163388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:11:28.549287795Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:11:28.571793278Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:11:28.571836571Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:11:28.571866883Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:11:28.571877799Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:11:28.571885885Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:11:33.591283872Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:11:33.621733076Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:11:33.621863399Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:11:33.646123066Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:11:33.646166483Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:11:33.646180936Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:11:33.64619345Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:11:33.646202393Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:11:38.666126338Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:11:38.697678741Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:11:38.697796611Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:11:38.718988674Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:11:38.719066049Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:11:38.719086379Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:11:38.719137355Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:11:38.719146534Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:11:43.738010801Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:11:43.767731964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:11:43.767824116Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:11:43.787900758Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:11:43.787947089Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:11:43.787988309Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:11:43.788020871Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:11:43.788029664Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:11:48.807496624Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:11:48.83691464Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:11:48.837014065Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:11:48.863811147Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:11:48.86385783Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:11:48.863873113Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:11:48.863883516Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:11:48.86389041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:11:53.882273904Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:11:53.910062567Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:11:53.910165709Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:11:53.930302225Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:11:53.930343069Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:11:53.930356893Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:11:53.930369284Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:11:53.930378743Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:11:58.948291436Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:11:58.979032907Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:11:58.979151823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:11:58.999639446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:11:58.999683072Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:12:04.02604914Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:12:04.057972928Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:12:04.058069975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:12:04.079949732Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:12:04.079992457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:12:04.080007305Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:12:04.080025707Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:12:04.080033948Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:12:09.098488947Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:12:09.125842299Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:12:09.125968895Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:12:09.151337463Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:12:09.151378117Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:12:09.151391032Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:12:09.151401888Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:12:09.151410278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:12:14.165462574Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:12:14.194967588Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:12:14.195076493Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:12:14.216682819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:12:14.216759313Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:12:14.216774987Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:12:14.216784459Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:12:14.216793773Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:12:19.238264927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:12:19.266141147Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:12:19.266251323Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:12:19.286814619Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:12:19.286857358Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:12:19.28686997Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:12:19.286880736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:12:19.28688892Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:12:24.303690784Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:12:24.333070538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:12:24.333169522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:12:24.355020088Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:12:24.355072925Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:12:24.355087795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:12:24.355099431Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:12:24.35510832Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:12:29.368469953Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:12:29.397152293Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:12:29.397290228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:12:29.417464363Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:12:29.417842637Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:12:29.41786518Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:12:29.417878313Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:12:29.417889181Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:12:34.433053557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:12:34.462319069Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:12:34.462414347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:12:34.485074059Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:12:34.485134545Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:12:34.485149861Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:12:34.48516089Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:12:34.485169914Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:12:39.50727927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:12:39.538884315Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:12:39.539009863Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:12:39.563785179Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:12:39.563846029Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:12:39.563860034Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:12:39.563928292Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:12:39.563939187Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:12:44.578947657Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:12:44.60967826Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:12:44.609800033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:12:44.631942142Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:12:44.631988353Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:12:44.63200157Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:12:44.632013084Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:12:44.632022509Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:12:49.652453825Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:12:49.678544892Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:12:49.678637447Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:12:49.700941873Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:12:49.700991337Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:12:49.701006646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:12:49.701017485Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:12:49.70102467Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:12:54.719173578Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:12:54.747759039Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:12:54.747847886Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:12:54.769203476Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:12:54.769274794Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:12:54.769290439Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:12:54.769300507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:12:54.769309392Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:12:59.790282641Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:12:59.82098103Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:12:59.821074129Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:12:59.84460582Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:12:59.844670433Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:12:59.844685953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:12:59.844696378Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:12:59.844705554Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:13:04.861288061Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:13:04.890324547Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:13:04.890434454Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:13:04.911152714Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:13:04.911197656Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:13:04.91121102Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:13:04.911223445Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:13:04.911272002Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:13:09.929312099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:13:09.956857065Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:13:09.956976377Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:13:09.980052861Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:13:09.980096219Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:13:09.980110502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:13:09.980120575Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:13:09.980128711Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:13:14.997396289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:13:15.039932103Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:13:15.04002643Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:13:15.065937378Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:13:15.065996201Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:13:15.066009587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:13:15.066020549Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:13:15.066028962Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:13:20.084128924Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:13:20.115490711Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:13:20.115615445Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:13:20.139021472Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:13:20.139295701Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:13:20.139340614Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:13:20.139353121Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:13:20.139362947Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:13:25.158455964Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:13:25.185452031Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:13:25.185559048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:13:25.205161192Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:13:25.205219848Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:13:25.205255189Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:13:25.205268409Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:13:25.205278851Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:13:30.22248359Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:13:30.259177592Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:13:30.259405279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:13:30.280411519Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:13:30.280566716Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:13:30.280582741Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:13:30.280594895Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:13:30.280604441Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:13:35.298408412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:13:35.326340809Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:13:35.326429576Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:13:35.346336903Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:13:35.346383087Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:13:35.346398565Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:13:35.346411388Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:13:35.346421899Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:13:40.361903872Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:13:40.390983477Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:13:40.39109268Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:13:40.411748731Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:13:40.411790687Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:13:40.411844651Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:13:40.411856103Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:13:40.411864646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:13:45.427100596Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:13:45.456291658Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:13:45.456379807Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:13:45.480413155Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:13:45.480539062Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:13:45.480555339Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:13:45.4805663Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:13:45.480575761Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:13:50.499826927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:13:50.530492272Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:13:50.530609582Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:13:50.555758955Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:13:50.55580085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:13:50.555814627Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:13:50.555827089Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:13:50.555836441Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:13:55.57216819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:13:55.59885087Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:13:55.598970552Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:13:55.61919133Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:13:55.619249021Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:13:55.619265289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:13:55.619276072Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:13:55.619285208Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:14:00.638651267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:14:00.66875173Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:14:00.668881764Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:14:00.689420223Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:14:00.689460284Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:14:00.689473444Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:14:00.689485914Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:14:00.689495762Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:14:05.706770545Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:14:05.737112117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:14:05.737225892Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:14:05.757899716Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:14:05.757941862Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:14:05.757955387Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:14:05.757966361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:14:05.757975421Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:14:10.773778308Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:14:10.802526616Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:14:10.802618282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:14:10.826013757Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:14:10.826060824Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:14:10.826074451Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:14:10.826103028Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:14:10.826114004Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:14:15.840432222Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:14:15.868152248Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:14:15.868288783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:14:15.889285481Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:14:15.889324582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:14:15.889339626Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:14:15.889362955Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:14:15.88937189Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:14:20.907279848Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:14:20.93682824Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:14:20.936947583Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:14:20.957509005Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:14:20.957549907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:14:20.957563268Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:14:20.957575297Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:14:20.957584241Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:14:25.974770452Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:14:26.006734426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:14:26.006856264Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:14:26.029941843Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:14:26.029986077Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:14:26.030000899Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:14:26.030014178Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:14:26.030023748Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:14:31.05107523Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:14:31.082269226Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:14:31.082358624Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:14:31.106652561Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:14:31.106692662Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:14:31.106748103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:14:31.106857672Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:14:31.10687115Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:14:36.123325076Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:14:36.153813088Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:14:36.153912754Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:14:36.178858373Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:14:36.178917815Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:14:36.178951988Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:14:36.178971713Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:14:36.178980867Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:14:41.198723248Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:14:41.228997683Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:14:41.229115193Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:14:41.251416364Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:14:41.251459027Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:14:41.251500564Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:14:41.251511204Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:14:41.251625499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:14:46.269425461Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:14:46.298761117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:14:46.298856266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:14:46.322486312Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:14:46.322557222Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:14:46.322572599Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:14:46.322583687Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:14:46.322592187Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:14:51.341800901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:14:51.372435216Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:14:51.372934427Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:14:51.394060913Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:14:51.394103692Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:14:51.394117858Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:14:51.394130312Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:14:56.409851742Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:14:56.439265999Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:14:56.439380246Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:14:56.463504837Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:14:56.463546598Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:14:56.463561311Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:14:56.463578791Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:14:56.463587431Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:15:01.517152914Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:15:01.603995021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:15:01.604127389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:15:01.669024069Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:15:01.669076338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:15:01.669091499Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:15:01.669114597Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:15:01.669123514Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:15:06.691377369Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:15:06.721630707Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:15:06.72174498Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:15:06.743506917Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:15:06.743552317Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:15:06.743565752Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:15:06.743576818Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:15:06.743586089Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:15:11.761269886Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:15:11.789568941Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:15:11.789660203Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:15:11.813407636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:15:11.813454873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:15:11.813468001Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:15:11.813478362Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:15:11.813486439Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:15:16.831266821Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:15:16.861046573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:15:16.861172835Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:15:16.882629783Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:15:16.882670475Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:15:16.882683993Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:15:16.882695016Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:15:16.882705291Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:15:21.902841639Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:15:21.93176203Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:15:21.931908467Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:15:21.952793428Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:15:21.952843827Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:15:21.952858568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:15:21.952867357Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:15:21.952873981Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:15:26.971878469Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:15:26.999308957Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:15:26.99941952Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:15:27.020398798Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:15:27.020535867Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:15:27.020554945Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:15:27.02056652Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:15:27.020575973Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:15:32.040779374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:15:32.070630907Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:15:32.070737056Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:15:32.094701331Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:15:32.095166059Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:15:32.095394259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:15:32.095413312Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:15:32.095424814Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:15:37.113274567Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:15:37.14303444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:15:37.143153322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:15:37.165171395Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:15:37.165215875Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:15:37.165231137Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:15:37.16526237Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:15:37.165272323Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:15:42.185869232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:15:42.21568808Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:15:42.215810001Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:15:42.239740078Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:15:42.239784511Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:15:42.239800429Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:15:42.239812867Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:15:42.239822111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:15:47.259053717Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:15:47.286651407Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:15:47.286779677Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:15:47.3086149Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:15:47.308658471Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:15:47.308673649Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:15:47.308685111Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:15:47.308694111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:15:52.329067193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:15:52.358640984Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:15:52.358740377Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:15:52.380229555Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:15:52.380286254Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:15:52.380301723Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:15:52.380313057Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:15:52.380322091Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:15:57.396230058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:15:57.428917011Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:15:57.429031828Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:15:57.450088802Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:15:57.45013317Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:15:57.450146985Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:15:57.450159735Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:15:57.450168374Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:16:02.469767615Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:16:02.500149688Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:16:02.50025672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:16:02.524112044Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:16:02.524160641Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:16:02.52417552Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:16:02.524186738Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:16:02.524196313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:16:07.540478258Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:16:07.572499026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:16:07.57260163Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:16:07.594488699Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:16:07.594530829Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:16:07.59454459Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:16:07.594556016Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:16:07.594564281Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:16:12.614655272Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:16:12.645184103Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:16:12.645292559Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:16:12.667409375Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:16:12.667454097Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:16:12.667468333Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:16:12.667479228Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:16:12.667487656Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:16:17.69087833Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:16:17.719316158Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:16:17.719423979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:16:17.740009696Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:16:17.740054308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:16:17.740068136Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:16:17.740077936Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:16:17.740087693Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:16:22.759964278Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:16:22.790312979Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:16:22.790425514Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:16:22.810504244Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:16:22.81054735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:16:22.810560725Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:16:22.810572602Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:16:22.810581678Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:16:27.826284646Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:16:27.856100865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:16:27.856192862Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:16:27.876578165Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:16:27.876619834Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:16:27.876645485Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:16:27.87665606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:16:27.876664822Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:16:32.897623959Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:16:32.936748567Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:16:32.936882314Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:16:32.964299697Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:16:32.964341298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:16:32.964398694Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:16:32.964568137Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:16:32.964603315Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:16:37.985334226Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:16:38.014033704Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:16:38.014133651Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:16:38.036536131Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:16:38.03659481Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:16:38.03661143Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:16:38.036622267Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:16:38.036630719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:16:43.059280337Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:16:43.090723604Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:16:43.090821071Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:16:43.117886226Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:16:43.117928884Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:16:43.117942542Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:16:43.11795481Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:16:43.117964138Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:16:48.137603151Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:16:48.165189687Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:16:48.165292264Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:16:48.190061773Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:16:48.190105085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:16:48.190118868Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:16:48.190129832Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:16:48.190138193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:16:53.21264901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:16:53.242036956Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:16:53.242127031Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:16:53.26288878Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:16:53.262933947Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:16:53.262947092Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:16:53.262957136Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:16:53.262965068Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:16:58.280304096Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:16:58.30877222Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:16:58.30888499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:16:58.334257124Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:16:58.33430196Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:16:58.334315288Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:16:58.334325822Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:16:58.334334763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:17:03.355304232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:17:03.387983274Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:17:03.38810894Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:17:03.410409741Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:17:03.41045122Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:17:03.410464615Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:17:03.410474947Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:17:03.410483457Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:17:08.431293282Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:17:08.461928532Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:17:08.462019702Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:17:08.48630139Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:17:08.486355995Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:17:08.486372402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:17:08.486382215Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:17:08.486390701Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:17:13.50406016Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:17:13.53193186Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:17:13.532040854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:17:13.555962081Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:17:13.556009755Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:17:13.556025187Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:17:13.556036613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:17:13.556044087Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:17:18.571315677Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:17:18.601390621Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:17:18.601484726Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:17:18.621407855Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:17:18.621455289Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:17:18.621469427Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:17:18.621498744Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:17:18.621508414Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:17:23.64153827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:17:23.672977535Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:17:23.673071844Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:17:23.69700419Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:17:23.697052028Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:17:23.697065859Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:17:23.697076954Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:17:23.697085985Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:17:28.712186321Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:17:28.740298621Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:17:28.740394282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:17:28.762582075Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:17:28.762625297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:17:28.76263908Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:17:28.762650197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:17:28.762660994Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:17:33.778397286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:17:33.806201798Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:17:33.80634333Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:17:33.829458799Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:17:33.829503965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:17:33.829519398Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:17:33.829547571Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:17:33.829560063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:17:38.850268745Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:17:38.878602939Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:17:38.878704739Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:17:38.90218187Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:17:38.902225649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:17:38.90225278Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:17:38.90226445Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:17:38.902272726Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:17:43.917059074Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:17:43.946024093Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:17:43.946143904Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:17:43.968591901Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:17:43.968634909Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:17:43.968648601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:17:43.96866008Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:17:43.968668569Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:17:48.988770418Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:17:49.022611982Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:17:49.022704292Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:17:49.046067014Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:17:49.046124994Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:17:49.046207447Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:17:49.046221335Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:17:49.046230307Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:17:54.062278981Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:17:54.089835223Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:17:54.089938672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:17:54.113459653Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:17:54.113510492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:17:54.113524469Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:17:54.113534794Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:17:54.113543893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:17:59.132331347Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:17:59.159930079Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:17:59.160022621Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:17:59.182391639Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:17:59.18243689Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:17:59.182450259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:17:59.182474611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:17:59.182483305Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:18:04.198370165Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:18:04.228831712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:18:04.228931316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:18:04.251195994Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:18:04.25125976Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:18:04.25127446Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:18:04.251283658Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:18:04.251291915Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:18:09.266460996Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:18:09.296411557Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:18:09.296571641Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:18:09.320801181Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:18:09.320844475Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:18:09.320861294Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:18:09.320872868Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:18:09.320882993Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:18:14.335905356Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:18:14.364389533Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:18:14.364572965Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:18:14.386746004Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:18:14.386788353Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:18:14.386826115Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:18:14.386837877Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:18:14.386846485Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:18:19.402600115Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:18:19.43025328Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:18:19.430370711Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:18:19.451061639Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:18:19.451103027Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:18:19.451116679Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:18:19.451127812Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:18:19.451137599Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:18:24.466446463Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:18:24.498255162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:18:24.49837735Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:18:24.521574241Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:18:24.521615012Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:18:24.521629495Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:18:24.521640678Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:18:24.521650753Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:18:29.541300133Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:18:29.570391795Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:18:29.570495767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:18:29.592987197Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:18:29.593047476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:18:29.593062153Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:18:29.593072103Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:18:29.593079904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:18:34.608446416Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:18:34.639640817Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:18:34.639737007Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:18:34.661424418Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:18:34.661492714Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:18:34.66150861Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:18:34.661519945Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:18:34.661528607Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:18:39.677334494Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:18:39.70785947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:18:39.707975165Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:18:39.729017086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:18:39.729075281Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:18:39.729090384Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:18:39.729100061Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:18:39.729109178Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:18:44.746589866Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:18:44.776189882Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:18:44.77631598Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:18:44.797572189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:18:44.797618803Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:18:44.797632755Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:18:44.797644803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:18:44.797655159Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:18:49.814372953Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:18:49.844049909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:18:49.844150164Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:18:49.864565856Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:18:49.864617727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:18:49.864634056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:18:49.864646264Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:18:49.864654836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:18:54.882291668Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:18:54.913779513Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:18:54.913874545Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:18:54.938476079Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:18:54.938521629Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:18:54.938538212Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:18:54.938573079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:18:54.938584111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:18:59.956129511Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:18:59.984632809Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:18:59.984745505Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:19:00.011420531Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:19:00.011469358Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:19:00.011485729Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:19:00.011496886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:19:00.011507528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:19:05.034286922Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:19:05.065576954Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:19:05.065700404Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:19:05.087028915Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:19:05.087070413Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:19:05.087084438Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:19:05.087096401Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:19:05.087106198Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:19:10.104021096Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:19:10.135317064Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:19:10.135457782Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:19:10.15865235Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:19:10.158712631Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:19:10.158728198Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:19:10.158739292Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:19:10.158747908Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:19:15.176078855Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:19:15.207186375Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:19:15.207324564Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:19:15.231778918Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:19:15.231824251Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:19:15.231838061Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:19:15.231848826Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:19:15.23185673Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:19:20.253398093Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:19:20.282993929Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:19:20.28312112Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:19:20.307665543Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:19:20.307725435Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:19:20.307738661Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:19:20.30774909Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:19:20.307757281Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:19:25.323357897Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:19:25.351753574Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:19:25.351879738Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:19:25.37577761Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:19:25.375824323Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:19:25.375837813Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:19:25.375867161Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:19:25.375876933Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:19:30.394506378Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:19:30.424830352Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:19:30.424921377Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:19:30.445120861Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:19:30.445165351Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:19:30.445179342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:19:30.445190634Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:19:30.445199875Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:19:35.463688245Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:19:35.494323729Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:19:35.494436952Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:19:35.518530042Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:19:35.518569593Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:19:35.51860024Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:19:35.518610408Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:19:35.518618532Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:19:40.538306523Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:19:40.568078574Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:19:40.568193946Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:19:40.588207109Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:19:45.605389131Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:19:45.635930858Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:19:45.636054787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:19:45.661345891Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:19:45.66139038Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:19:45.661403887Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:19:45.661414255Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:19:45.661422352Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:19:50.683779201Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:19:50.712441362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:19:50.712955717Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:19:50.735034884Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:19:50.73507888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:19:50.73509223Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:19:50.735102062Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:19:50.735111886Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:19:55.75233379Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:19:55.779986664Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:19:55.780086281Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:19:55.805019254Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:19:55.805068379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:19:55.805081801Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:19:55.80509242Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:19:55.805100654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:20:00.817483655Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:20:00.845041709Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:20:00.845168095Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:20:00.865642461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:20:00.865700731Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:20:00.86571506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:20:00.865724813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:20:00.865734098Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:20:05.880632463Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:20:05.913060485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:20:05.913155438Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:20:05.936332453Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:20:05.936384326Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:20:05.936398403Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:20:05.936408674Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:20:05.936417717Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:20:10.952134501Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:20:10.981777384Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:20:10.981872662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:20:11.013528437Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:20:11.013575962Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:20:11.01359109Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:20:11.013603364Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:20:11.013612653Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:20:16.02980024Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:20:16.060213696Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:20:16.06032138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:20:16.081337016Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:20:16.081384108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:20:16.081398607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:20:16.08140931Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:20:16.081419654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:20:21.10194306Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:20:21.130732127Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:20:21.130825224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:20:21.15199782Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:20:21.152044129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:20:21.152058691Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:20:21.152083801Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:20:21.152092919Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:20:26.172094015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:20:26.202760115Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:20:26.202864351Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:20:26.224867752Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:20:26.224935245Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:20:26.224949948Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:20:26.224962911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:20:26.224972249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:20:31.244269591Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:20:31.274970195Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:20:31.275078872Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:20:31.295703214Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:20:31.295746445Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:20:31.295800023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:20:31.295810228Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:20:31.295819118Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:20:36.31044475Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:20:36.339627629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:20:36.339742138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:20:36.3633128Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:20:36.363686253Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:20:36.363708854Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:20:36.363721137Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:20:36.363731743Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:20:41.385295099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:20:41.414165197Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:20:41.414283973Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:20:41.438754063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:20:41.438815101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:20:46.45629394Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:20:46.485345772Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:20:46.485481309Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:20:46.511457581Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:20:46.511505Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:20:46.51151987Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:20:46.511531131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:20:46.511538482Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:20:51.5269871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:20:51.558170915Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:20:51.558298789Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:20:51.579099264Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:20:51.579180799Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:20:51.579196646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:20:51.579207538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:20:51.579215453Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:20:56.596277424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:20:56.626863302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:20:56.626979185Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:20:56.650877448Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:20:56.650922847Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:20:56.650935406Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:20:56.650945796Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:20:56.650956548Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:21:01.681855771Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:21:01.770554316Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:21:01.770732508Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:21:01.950145507Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:21:06.966308056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:21:06.998322202Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:21:06.998444876Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:21:07.019623813Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:21:07.019669443Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:21:07.019685389Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:21:07.019696983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:21:07.019705551Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:21:12.03718567Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:21:12.066261295Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:21:12.066743957Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:21:12.089078804Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:21:12.089123432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:21:12.089136776Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:21:12.089193565Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:21:12.089204071Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:21:17.103823767Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:21:17.133995518Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:21:17.134084653Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:21:17.160294406Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:21:17.160335242Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:21:17.160349203Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:21:17.160390118Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:21:17.160399419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:21:22.182650579Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:21:22.212207127Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:21:22.212342942Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:21:22.236716848Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:21:22.236764443Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:21:22.236779463Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:21:22.236792505Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:21:22.236802091Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:21:27.251917852Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:21:27.282094628Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:21:27.282195418Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:21:27.307333266Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:21:27.307373423Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:21:27.307408186Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:21:27.307442603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:21:27.30745157Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:21:32.328539169Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:21:32.359878781Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:21:32.360040368Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:21:32.384943212Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:21:32.384985329Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:21:32.38500076Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:21:32.38501377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:21:37.403449135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:21:37.434442987Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:21:37.434537237Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:21:37.460782382Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:21:37.460831261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:21:37.460846793Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:21:37.460858528Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:21:37.460869063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:21:42.485771464Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:21:42.515226584Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:21:42.515362394Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:21:42.537093072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:21:42.537133568Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:21:42.537147022Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:21:42.537159836Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:21:42.537178839Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:21:47.553675173Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:21:47.583630051Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:21:47.583734662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:21:47.60411423Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:21:47.604159006Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:21:47.604172908Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:21:47.60420774Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:21:47.604218658Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:21:52.624445662Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:21:52.650268799Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:21:52.650362678Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:21:52.671137734Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:21:52.671174741Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:21:52.671189364Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:21:52.67120699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:21:52.671214459Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:21:57.684023568Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:21:57.71534971Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:21:57.715445791Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:21:57.73908101Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:21:57.739119014Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:21:57.739129011Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:21:57.739137381Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:21:57.739146239Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:22:02.759793619Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:22:02.79178257Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:22:02.79189083Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:22:02.815405766Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:22:02.815450925Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:22:02.815465501Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:22:02.815477974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:22:07.830405754Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:22:07.859984622Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:22:07.860095425Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:22:07.888609241Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:22:07.888656174Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:22:07.888670986Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:22:07.888682691Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:22:07.888691599Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:22:12.904187038Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:22:12.935753575Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:22:12.935857859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:22:12.956620765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:22:12.956675342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:22:12.956690811Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:22:12.956714564Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:22:12.956785509Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:22:17.976033905Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:22:18.007937241Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:22:18.008057447Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:22:18.029622806Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:22:18.029678303Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:22:18.029692677Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:22:18.02970327Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:22:18.029713077Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:22:23.04654808Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:22:23.078917297Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:22:23.079031762Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:22:23.103406189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:22:23.103451996Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:22:23.103467123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:22:23.103478813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:22:23.103488646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:22:28.121537031Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:22:28.153020732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:22:28.153113029Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:22:28.174356586Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:22:28.174412579Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:22:28.174428827Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:22:28.174438788Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:22:28.174446775Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:22:33.196296642Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:22:33.226429639Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:22:33.22653849Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:22:33.250758228Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:22:33.250802248Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:22:33.25081593Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:22:33.250828376Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:22:33.250837551Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:22:38.265964398Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:22:38.296828712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:22:38.296929659Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:22:38.323601121Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:22:38.323642683Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:22:38.323677829Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:22:38.323687748Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:22:38.323695933Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:22:43.345745704Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:22:43.3751977Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:22:43.375316699Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:22:43.398143714Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:22:43.398184529Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:22:43.39819942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:22:43.39821116Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:22:43.398219481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:22:48.417015551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:22:48.445634978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:22:48.445752259Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:22:48.470656195Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:22:48.470703804Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:22:48.470718689Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:22:48.4707279Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:22:48.47073464Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:22:53.487717704Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:22:53.515423724Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:22:53.515522218Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:22:53.537682194Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:22:53.537744033Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:22:53.537757869Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:22:53.537767774Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:22:53.537775934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:22:58.553723937Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:22:58.582145845Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:22:58.582252507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:22:58.602505334Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:22:58.602545942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:22:58.602598573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:22:58.602610065Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:22:58.602618062Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:23:03.623304363Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:23:03.653850995Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:23:03.653972924Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:23:03.67756591Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:23:03.677608803Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:23:03.67762278Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:23:03.677634888Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:23:08.694751471Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:23:08.725166837Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:23:08.725272054Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:23:08.749043535Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:23:08.749084865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:23:08.749123086Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:23:08.749134909Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:23:08.749143624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:23:13.767643473Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:23:13.798123865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:23:13.798308343Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:23:13.823011039Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:23:13.823051898Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:23:13.823065329Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:23:13.823076537Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:23:13.823084797Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:23:18.840632689Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:23:18.869473573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:23:18.869571406Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:23:18.896774492Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:23:18.896833625Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:23:18.896848476Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:23:18.89685991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:23:23.910462136Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:23:23.940798061Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:23:23.940905577Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:23:23.963535024Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:23:23.963575909Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:23:23.963589353Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:23:23.963601425Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:23:23.963610423Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:23:28.980146027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:23:29.010587793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:23:29.010697284Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:23:29.036041122Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:23:29.036114824Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:23:29.036129191Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:23:29.036139414Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:23:29.036147683Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:23:34.051923479Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:23:34.081216488Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:23:34.081360436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:23:34.10357106Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:23:34.10361708Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:23:34.103630906Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:23:34.103641655Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:23:34.103651663Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:23:39.124354161Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:23:39.15301105Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:23:39.153128526Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:23:39.174874649Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:23:39.174915571Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:23:39.174930114Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:23:39.174941126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:23:39.174949491Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:23:44.189348036Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:23:44.218053235Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:23:44.218175022Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:23:44.240530833Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:23:44.24058395Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:23:44.240598291Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:23:44.24060943Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:23:44.240618587Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:23:49.259172638Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:23:49.287116272Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:23:49.287210348Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:23:49.308958063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:23:49.308998669Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:23:49.309012684Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:23:49.309054341Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:23:49.309066194Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:23:54.32728322Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:23:54.356105594Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:23:54.356203154Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:23:54.380024776Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:23:54.380068702Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:23:54.380082176Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:23:54.380093935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:23:54.380103971Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:23:59.401121466Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:23:59.430101327Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:23:59.430224953Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:23:59.452973148Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:23:59.453017509Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:23:59.45303193Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:23:59.45304455Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:23:59.453053346Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:24:04.471280011Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:24:04.501882194Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:24:04.501979181Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:24:04.527276628Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:24:04.527326608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:24:04.527340139Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:24:04.527383342Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:24:04.527394543Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:24:09.545216832Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:24:09.573896503Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:24:09.573988073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:24:09.597048354Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:24:09.597103741Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:24:09.597120001Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:24:09.597130485Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:24:09.597138313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:24:14.617300014Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:24:14.64803681Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:24:14.648143045Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:24:14.668883018Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:24:14.668929191Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:24:14.668944814Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:24:14.668954603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:24:14.668963447Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:24:19.68928302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:24:19.718214325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:24:19.718335882Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:24:19.743057921Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:24:19.743100625Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:24:19.743113849Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:24:19.743124686Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:24:19.743134524Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:24:24.759306484Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:24:24.789719485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:24:24.78983442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:24:24.812696459Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:24:24.81273871Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:24:29.832280874Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:24:29.860147331Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:24:29.860260999Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:24:29.880851955Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:24:29.880899985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:24:29.880914234Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:24:29.880925896Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:24:29.880935563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:24:34.895974439Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:24:34.926539543Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:24:34.926638296Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:24:34.953744057Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:24:34.953787806Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:24:34.953824345Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:24:34.953835446Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:24:34.953844604Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:24:39.972286005Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:24:40.002400854Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:24:40.002535609Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:24:40.029671417Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:24:40.029714795Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:24:40.029728852Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:24:40.029740196Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:24:40.029749019Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:24:45.049186239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:24:45.079298955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:24:45.079441491Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:24:45.104949638Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:24:45.105003848Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:24:45.105019645Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:24:50.124285328Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:24:50.153159574Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:24:50.153284433Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:24:50.176294008Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:24:50.176344178Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:24:50.176359949Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:24:50.176371688Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:24:50.176380278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:24:55.19133113Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:24:55.219207005Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:24:55.219353745Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:24:55.243494095Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:24:55.243542661Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:24:55.243557491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:24:55.243569646Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:25:00.260269689Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:25:00.333785519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:25:00.333905268Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:25:00.359494477Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:25:00.359538861Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:25:00.359553448Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:25:00.359564288Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:25:00.359572706Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:25:05.377595147Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:25:05.408826213Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:25:05.40895279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:25:05.431594705Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:25:05.431638792Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:25:05.431653045Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:25:05.431664893Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:25:05.431673681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:25:10.451103562Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:25:10.483504843Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:25:10.483634995Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:25:10.507573215Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:25:10.507614427Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:25:10.507629041Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:25:10.507639849Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:25:10.50764929Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:25:15.523106821Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:25:15.553642021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:25:15.553743603Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:25:15.575197037Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:25:15.575260098Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:25:15.575275418Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:25:15.575284978Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:25:15.575293095Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:25:20.596307548Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:25:20.626383009Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:25:20.626492221Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:25:20.653846807Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:25:20.653888004Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:25:20.65390196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:25:20.653944181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:25:20.653952674Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:25:25.670802398Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:25:25.69910304Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:25:25.699198396Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:25:25.72353435Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:25:25.723582916Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:25:25.723598272Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:25:25.723610807Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:25:25.723620232Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:25:30.740289269Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:25:30.769333024Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:25:30.769445878Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:25:30.794706367Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:25:30.794759062Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:25:30.794773077Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:25:30.794783927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:25:30.794792339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:25:35.81020287Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:25:35.84052333Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:25:35.840643034Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:25:35.863498326Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:25:35.863542255Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:25:35.863555725Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:25:35.863567226Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:25:35.86357712Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:25:40.881744102Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:25:40.913876619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:25:40.913984765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:25:40.934964405Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:25:40.935005338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:25:40.935019008Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:25:40.935061496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:25:40.935070216Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:25:45.953292421Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:25:45.982788477Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:25:45.982911173Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:25:46.00601726Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:25:46.00606022Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:25:46.006073951Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:25:46.006094817Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:25:46.006103701Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:25:51.024173613Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:25:51.054043993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:25:51.054383516Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:25:51.074635222Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:25:51.074691698Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:25:51.074706859Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:25:51.074764408Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:25:51.074774463Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:25:56.092564151Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:25:56.123367739Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:25:56.123525066Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:25:56.14903496Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:25:56.14907623Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:25:56.14910273Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:25:56.14911506Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:25:56.149123791Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:26:01.168281069Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:26:01.197059436Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:26:01.19715613Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:26:01.220958729Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:26:01.221013181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:26:01.221027978Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:26:01.221039647Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:26:01.22116508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:26:06.236168857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:26:06.26658088Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:26:06.266693331Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:26:06.287795223Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:26:06.287838764Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:26:06.287853663Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:26:06.287889684Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:26:06.287898944Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:26:11.310844097Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:26:11.340341233Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:26:11.340568693Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:26:11.368867732Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:26:11.368910958Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:26:11.368925371Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:26:11.368938591Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:26:11.368947222Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:26:16.386701155Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:26:16.41472327Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:26:16.414834476Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:26:16.435806085Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:26:16.435846501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:26:16.435861439Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:26:16.435872661Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:26:16.4358817Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:26:21.454616589Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:26:21.483041554Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:26:21.483157161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:26:21.502541589Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:26:21.502765976Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:26:21.502785322Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:26:21.502829377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:26:21.502838829Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:26:26.523341908Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:26:26.553546691Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:26:26.55368125Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:26:26.578219454Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:26:26.578273982Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:26:26.578287931Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:26:26.578297356Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:26:26.578306978Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:26:31.598171278Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:26:31.629997345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:26:31.630090359Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:26:31.650283636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:26:31.650329766Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:26:31.650345133Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:26:31.650356678Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:26:31.650365324Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:26:36.668203553Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:26:36.696693152Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:26:36.696799334Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:26:36.718029756Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:26:36.718095581Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:26:36.718109637Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:26:36.718121133Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:26:36.718129547Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:26:41.739463012Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:26:41.766631775Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:26:41.766738755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:26:41.789915133Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:26:41.789957566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:26:41.789971333Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:26:41.789995024Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:26:41.790005306Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:26:46.809066926Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:26:46.838750753Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:26:46.838841813Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:26:46.860276321Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:26:46.860319597Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:26:46.86033452Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:26:46.860345035Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:26:46.86035367Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:26:51.875534032Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:26:51.905155382Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:26:51.905265935Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:26:51.925431819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:26:51.925486482Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:26:51.925499793Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:26:51.925510546Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:26:51.925520992Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:26:56.941165157Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:26:56.971648579Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:26:56.971768612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:26:56.993056784Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:26:56.993099708Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:27:02.018099974Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:27:02.053371976Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:27:02.053474618Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:27:02.104148359Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:27:02.104198429Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:27:02.104214445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:27:02.104224452Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:27:02.104248749Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:27:07.120292541Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:27:07.150908334Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:27:07.151028746Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:27:07.177261859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:27:07.177305827Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:27:07.177319075Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:27:07.177330618Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:27:07.1773406Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:27:12.194778301Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:27:12.22598773Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:27:12.226106612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:27:12.251251899Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:27:12.251294787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:27:12.251308442Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:27:12.251320744Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:27:12.251329857Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:27:17.272436434Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:27:17.301968752Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:27:17.302081072Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:27:17.322786728Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:27:17.322829833Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:27:17.322842584Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:27:17.322853314Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:27:17.322863922Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:27:22.341294621Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:27:22.371571001Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:27:22.371681148Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:27:22.394802628Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:27:22.394844377Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:27:22.394894918Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:27:22.394905631Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:27:22.394914469Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:27:27.414224318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:27:27.44164844Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:27:27.441762789Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:27:27.464672819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:27:27.464717318Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:27:27.464730631Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:27:27.464742648Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:27:27.464752217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:27:32.483322515Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:27:32.513620703Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:27:32.513711197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:27:32.533598437Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:27:32.53364073Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:27:32.533671152Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:27:32.533681069Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:27:32.533689508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:27:37.550796597Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:27:37.580894929Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:27:37.58099787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:27:37.602118288Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:27:37.602179121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:27:37.602193914Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:27:37.602204712Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:27:37.602213042Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:27:42.622283315Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:27:42.652829394Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:27:42.652971345Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:27:42.672810355Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:27:42.672857374Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:27:42.672890333Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:27:42.672902271Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:27:42.67291094Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:27:47.692014635Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:27:47.72386853Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:27:47.723963834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:27:47.746944982Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:27:47.747003465Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:27:47.747017998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:27:47.747027555Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:27:47.747036018Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:27:52.766196977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:27:52.796954318Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:27:52.797069309Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:27:52.821855185Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:27:52.821936368Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:27:52.821953246Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:27:52.821973279Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:27:52.82198292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:27:57.83639883Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:27:57.865484889Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:27:57.865615876Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:27:57.888294893Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:27:57.888364985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:27:57.888380579Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:27:57.888390056Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:27:57.888398128Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:28:02.905306805Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:28:02.935929518Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:28:02.936051362Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:28:02.958725355Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:28:02.959126329Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:28:02.959330875Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:28:02.959562974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:28:02.959578002Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:28:07.972957098Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:28:08.001998416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:28:08.002124365Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:28:08.025130085Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:28:08.025169847Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:28:08.025185276Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:28:08.025198617Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:28:13.042664671Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:28:13.07316505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:28:13.073274726Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:28:13.098183356Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:28:13.098225348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:28:13.098250746Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:28:13.098262007Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:28:13.098270292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:28:18.118271486Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:28:18.146355851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:28:18.146445873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:28:18.170104776Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:28:18.170146902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:28:18.170161578Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:28:18.170172686Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:28:18.170182003Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:28:23.189371634Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:28:23.21769325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:28:23.217809506Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:28:23.242496256Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:28:23.242893912Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:28:23.242915791Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:28:23.24292816Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:28:23.24293962Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:28:28.257095925Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:28:28.288445285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:28:28.289009277Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:28:28.31162929Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:28:28.311670691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:28:28.311685259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:28:28.31169753Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:28:28.311707705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:28:33.331283592Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:28:33.359833451Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:28:33.359921523Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:28:33.385760042Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:28:33.385839409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:28:33.385855044Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:28:33.385864069Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:28:33.385872998Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:28:38.401305511Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:28:38.431452108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:28:38.431566815Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:28:38.457472353Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:28:38.457515403Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:28:38.457528734Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:28:38.457540194Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:28:38.4575497Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:28:43.476599542Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:28:43.503524992Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:28:43.503617804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:28:43.526799472Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:28:43.526839364Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:28:43.526869628Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:28:43.526880527Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:28:43.526888439Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:28:48.548046605Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:28:48.57938728Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:28:48.579493579Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:28:48.599980172Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:28:48.600036453Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:28:48.600050371Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:28:48.600059847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:28:48.600067909Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:28:53.618090629Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:28:53.648266396Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:28:53.648378177Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:28:53.673437501Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:28:53.673480379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:28:53.673495529Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:28:53.673507087Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:28:53.673515376Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:28:58.690734802Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:28:58.717162598Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:28:58.717300887Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:28:58.741383544Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:28:58.741427216Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:28:58.741442784Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:28:58.741480472Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:29:03.758272354Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:29:03.791487285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:29:03.791597023Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:29:03.816387531Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:29:03.816572223Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:29:03.816593135Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:29:03.816603381Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:29:03.816612718Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:29:08.840933421Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:29:08.871649407Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:29:08.871762507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:29:08.898395606Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:29:08.898440173Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:29:08.898455836Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:29:08.89846621Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:29:08.898476498Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:29:13.913547556Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:29:13.943342749Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:29:13.943470885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:29:13.97004318Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:29:13.970086017Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:29:13.970098987Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:29:13.970110007Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:29:13.970120363Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:29:18.988029197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:29:19.019595701Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:29:19.019716794Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:29:19.04483641Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:29:19.044879813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:29:19.044894631Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:29:19.044907149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:29:19.044917145Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:29:24.059232864Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:29:24.090148798Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:29:24.090254003Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:29:24.113820808Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:29:24.11388278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:29:24.113896769Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:29:24.113916444Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:29:24.113928338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:29:29.13368286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:29:29.160767118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:29:29.160897053Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:29:29.184597418Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:29:29.184658203Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:29:29.184672612Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:29:29.184683747Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:29:29.184692168Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:29:34.199753733Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:29:34.230384663Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:29:34.230480721Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:29:34.252064291Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:29:34.252109053Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:29:34.252123541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:29:34.252134867Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:29:34.252144064Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:29:39.273265513Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:29:39.301040143Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:29:39.3011448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:29:39.324221186Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:29:39.324278016Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:29:39.324292088Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:29:39.324301352Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:29:39.324309981Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:29:44.342265075Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:29:44.371530358Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:29:44.371641297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:29:44.397783785Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:29:44.397827335Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:29:44.397840112Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:29:44.397876232Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:29:44.397884861Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:29:49.416401951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:29:49.444198253Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:29:49.444309254Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:29:49.468754028Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:29:49.468800393Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:29:49.46881477Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:29:49.468826937Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:29:49.46883709Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:29:54.485293168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:29:54.515407355Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:29:54.515500522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:29:54.540828907Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:29:54.540876056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:29:54.540889785Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:29:54.540899493Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:29:54.540906389Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:29:59.557881562Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:29:59.587849438Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:29:59.587981691Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:29:59.612945972Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:29:59.612985858Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:29:59.612999258Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:29:59.613011549Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:29:59.613030928Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:30:04.631396832Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:30:04.664916474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:30:04.665015361Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:30:04.692683056Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:30:04.692742735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:30:04.692760826Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:30:04.69279244Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:30:04.692802061Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:30:09.711439387Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:30:09.740728605Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:30:09.740833778Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:30:09.760397351Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:30:09.760559168Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:30:09.76057588Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:30:09.760586617Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:30:09.760595204Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:30:14.778312728Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:30:14.807801538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:30:14.807918628Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:30:14.833109988Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:30:14.833155847Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:30:14.833199816Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:30:14.833210662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:30:14.833219998Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:30:19.850048073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:30:19.880132453Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:30:19.880221783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:30:19.904929507Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:30:19.904974518Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:30:19.904989057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:30:19.905001171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:30:19.90501116Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:30:24.923161499Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:30:24.95157843Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:30:24.951667604Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:30:24.974329716Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:30:24.974371542Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:30:24.974385532Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:30:24.974396637Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:30:24.974405815Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:30:29.99360519Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:30:30.02455269Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:30:30.024644371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:30:30.051440958Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:30:30.051486036Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:30:30.05152993Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:30:30.051540661Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:30:30.051550877Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:30:35.07150298Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:30:35.100911714Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:30:35.10100667Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:30:35.126654735Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:30:35.126705446Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:30:35.126721095Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:30:35.126733313Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:30:35.12674226Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:30:40.145131609Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:30:40.173894986Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:30:40.173990399Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:30:40.19851191Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:30:40.198554673Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:30:40.198569881Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:30:40.198581905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:30:40.198591379Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:30:45.214100467Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:30:45.244071835Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:30:45.244172656Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:30:45.268153748Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:30:45.268197429Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:30:45.268211325Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:30:45.268222227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:30:45.268244675Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:30:50.287304265Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:30:50.317277891Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:30:50.317373696Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:30:50.339369996Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:30:50.339426126Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:30:50.339440439Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:30:50.339450394Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:30:50.339458422Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:30:55.354060273Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:30:55.383751062Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:30:55.383861937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:30:55.408927776Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:30:55.40897473Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:30:55.408991091Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:30:55.409003009Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:30:55.4090129Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:31:00.427178114Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:31:00.457603713Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:31:00.457735241Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:31:00.479566892Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:31:00.479629605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:31:00.479645287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:31:00.479654448Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:31:00.47966335Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:31:05.496131662Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:31:05.525312759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:31:05.525423294Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:31:05.546124955Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:31:05.546166505Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:31:05.546181658Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:31:05.546191638Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:31:05.546201002Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:31:10.566956696Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:31:10.594383863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:31:10.594480169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:31:10.619217542Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:31:10.619272917Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:31:15.635480829Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:31:15.665920489Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:31:15.666034499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:31:15.687422267Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:31:15.687464528Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:31:15.687480491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:31:15.687492298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:31:15.687501772Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:31:20.702286734Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:31:20.733190813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:31:20.733303511Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:31:20.756313981Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:31:20.756379698Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:31:20.75639406Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:31:20.756403974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:31:20.756411998Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:31:25.77221056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:31:25.801498487Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:31:25.80169634Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:31:25.824667086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:31:25.824710215Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:31:25.824751979Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:31:25.82476216Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:31:25.824770401Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:31:30.845273783Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:31:30.876307078Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:31:30.876416233Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:31:30.901760347Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:31:30.901804073Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:31:30.901818064Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:31:30.901830446Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:31:30.901839858Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:31:35.91534898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:31:35.946359106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:31:35.946458681Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:31:35.970058905Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:31:35.970101775Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:31:35.970117863Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:31:35.970128499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:31:35.970137291Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:31:40.98648818Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:31:41.018031315Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:31:41.018136424Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:31:41.039506328Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:31:41.039552442Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:31:41.039566273Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:31:46.056856727Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:31:46.086554807Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:31:46.086660093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:31:46.107075135Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:31:46.107122638Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:31:46.107138073Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:31:46.10715035Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:31:46.107160847Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:31:51.126200219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:31:51.171275092Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:31:51.172794988Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:31:51.206579731Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:31:51.206633735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:31:51.206648522Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:31:51.206694732Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:31:51.206705838Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:32:02.914659748Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:32:03.024552939Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:32:03.024682463Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:32:03.116962275Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:32:03.117008294Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:32:03.117023586Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:32:03.117067826Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:32:03.117079673Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:32:08.141295983Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:32:08.170613322Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:32:08.17071889Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:32:08.19386197Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:32:08.193914821Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:32:08.193929627Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:32:08.193940124Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:32:08.193948566Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:32:13.210266489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:32:13.241413875Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:32:13.241509703Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:32:13.262079425Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:32:13.262126325Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:32:13.262142241Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:32:13.26216365Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:32:13.26217315Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:32:18.282622535Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:32:18.311715784Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:32:18.311825862Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:32:18.337358619Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:32:18.337402947Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:32:18.337416249Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:32:18.337426475Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:32:18.337437542Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:32:23.351054266Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:32:23.380065453Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:32:23.380263569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:32:23.417134439Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:32:23.41740607Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:32:23.417428892Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:32:23.417441041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:32:23.417452303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:32:28.436845136Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:32:28.468333417Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:32:28.468575112Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:32:28.491411509Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:32:28.491451032Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:32:28.491466223Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:32:28.491476789Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:32:28.491487417Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:32:33.506286713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:32:33.533981744Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:32:33.53408442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:32:33.558791816Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:32:33.558840037Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:32:33.558855704Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:32:33.558865971Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:32:33.558874513Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:32:38.577296014Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:32:38.604945011Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:32:38.605042925Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:32:38.629390776Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:32:38.629433599Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:32:38.62944772Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:32:38.629459563Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:32:38.629470371Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:32:43.647286864Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:32:43.675922861Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:32:43.676033809Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:32:43.698146012Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:32:43.698187032Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:32:43.698224655Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:32:43.698331916Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:32:43.698344816Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:32:48.718600193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:32:48.749777593Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:32:48.749867351Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:32:48.7720555Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:32:48.772096394Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:32:48.772109446Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:32:48.772119982Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:32:48.772130338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:32:53.792447917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:32:53.822974198Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:32:53.823084661Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:32:53.843614186Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:32:53.843655247Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:32:53.843669023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:32:53.843678993Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:32:53.843687179Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:32:58.862044436Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:32:58.891733798Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:32:58.891833975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:32:58.916826831Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:32:58.916868301Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:32:58.916882429Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:32:58.916894318Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:32:58.916904405Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:33:03.933281137Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:33:03.962480058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:33:03.962592419Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:33:03.987707282Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:33:03.988079639Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:33:03.988100864Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:33:03.988114616Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:33:03.988126001Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:33:09.00801356Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:33:09.037662707Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:33:09.037781072Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:33:09.062143155Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:33:09.062184562Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:33:09.062198561Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:33:09.062210435Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:33:09.062220898Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:33:14.080083018Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:33:14.108017087Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:33:14.108128778Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:33:14.129779015Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:33:14.129819357Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:33:14.129855706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:33:14.129876319Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:33:14.129885401Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:33:19.152386437Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:33:19.181178063Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:33:19.181306642Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:33:19.206563109Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:33:19.206607129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:33:19.20662009Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:33:19.20663273Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:33:19.206642009Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:33:24.223162968Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:33:24.254771888Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:33:24.254862702Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:33:24.275528415Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:33:24.275617861Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:33:24.275634265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:33:24.275646133Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:33:24.275781035Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T21:33:24.276070071Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T21:33:24.276225Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:33:29.295271721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:33:29.322934911Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:33:29.323040047Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:33:29.342776866Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:33:29.342817886Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:33:29.342849084Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:33:29.34285905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:33:29.342867309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:33:34.358683606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:33:34.389894118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:33:34.390009479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:33:34.413639136Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:33:34.413695967Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:33:34.413711396Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:33:34.413721953Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:33:34.413730512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:33:39.431286648Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:33:39.461728126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:33:39.461836896Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:33:39.485110463Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:33:39.485150822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:33:39.485164937Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:33:39.485176326Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:33:39.485185982Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:33:44.500561543Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:33:44.531986109Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:33:44.532076129Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:33:44.554150919Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:33:44.554205964Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:33:44.554220116Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:33:44.554229529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:33:44.554251568Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:33:49.573467619Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:33:49.604728455Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:33:49.604823514Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:33:49.625865692Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:33:49.625930148Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:33:49.625945541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:33:49.625955867Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:33:49.625964368Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:33:54.64121366Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:33:54.673350007Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:33:54.673455799Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:33:54.693897985Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:33:54.693938107Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:33:54.693953005Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:33:54.693964051Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:33:54.693973442Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:33:59.709459033Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:33:59.740068789Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:33:59.740158605Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:33:59.762275992Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:33:59.762321213Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:33:59.762353863Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:33:59.762399233Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:33:59.762408688Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:34:04.779295099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:34:04.80756081Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:34:04.807654815Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:34:04.830193643Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:34:04.830285738Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:34:04.830302131Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:34:04.83032672Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:34:04.830336295Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:34:09.850532043Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:34:09.878260709Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:34:09.87837019Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:34:09.897493685Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:34:09.897536702Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:34:09.897550782Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:34:09.897563089Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:34:09.897572827Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:34:14.913670777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:34:14.944949452Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:34:14.94507056Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:34:14.965692289Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:34:14.965732565Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:34:14.965745617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:34:14.965756617Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:34:14.965765133Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:34:19.984851636Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:34:20.016942405Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:34:20.017036701Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:34:20.037504997Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:34:20.037548062Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:34:20.03756227Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:34:20.037573734Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:34:20.0375837Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:34:25.056622885Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:34:25.086771942Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:34:25.08689016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:34:25.110498896Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:34:25.11054257Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:34:25.110557483Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:34:25.110569445Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:34:25.110579743Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:34:30.125882784Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:34:30.156677849Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:34:30.156798356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:34:30.178146187Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:34:30.178186968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:34:30.178201883Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:34:30.178213577Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:34:30.178222771Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:34:35.195517977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:34:35.224367987Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:34:35.224594516Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:34:35.246456632Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:34:35.246496781Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:34:35.246510851Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:34:35.2465226Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:34:35.246533258Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:34:40.263300771Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:34:40.291363916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:34:40.291479119Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:34:40.314548608Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:34:40.314589598Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:34:40.314604101Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:34:40.314615481Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:34:40.314626229Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:34:45.330708692Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:34:45.36379825Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:34:45.363926028Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:34:45.384930262Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:34:45.384992896Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:34:45.385009225Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:34:45.385019046Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:34:45.38502735Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:34:50.403247082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:34:50.431391858Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:34:50.431517245Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:34:50.457484317Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:34:50.457543351Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:34:50.457558163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:34:50.457567794Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:34:50.45770522Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T21:34:50.45757609Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:34:55.477276827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:34:55.508350746Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:34:55.508512587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:34:55.52907276Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:34:55.529120692Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:34:55.529134573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:34:55.529171983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:34:55.529182215Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:35:00.545678373Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:35:00.57664711Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:35:00.576771191Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:35:00.599793591Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:35:00.599837387Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:35:00.599852998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:35:00.59986407Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:35:00.599873392Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:35:05.619291629Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:35:05.648979407Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:35:05.649092207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:35:05.670455737Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:35:05.670510432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:35:05.670525853Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:35:05.670537323Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:35:05.670546502Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:35:10.69226639Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:35:10.722909214Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:35:10.723025755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:35:10.745211848Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:35:10.745268772Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:35:15.764984973Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:35:15.792392698Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:35:15.792639952Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:35:15.813283919Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:35:15.813350662Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:35:15.813366079Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:35:15.813375576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:35:15.813384559Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:35:20.829618176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:35:20.859515368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:35:20.859612524Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:35:20.88356086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:35:20.883604787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:35:20.883618459Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:35:20.883629204Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:35:20.883638449Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:35:25.902669763Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:35:25.931515735Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:35:25.931615967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:35:25.951071341Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:35:25.951115814Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:35:25.951129839Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:35:25.951140427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:35:25.951149264Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:35:30.970447719Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:35:30.998766452Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:35:30.998879241Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:35:31.021410751Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:35:31.021454796Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:35:31.021468445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:35:31.021480224Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:35:31.021489836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:35:36.041276956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:35:36.069983906Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:35:36.070100438Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:35:36.091995282Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:35:36.092037365Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:35:36.092049848Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:35:36.092061131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:35:36.092071121Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:35:41.111129852Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:35:41.142641901Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:35:41.142760837Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:35:41.162524626Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:35:41.162566296Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:35:41.162594977Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:35:41.162605712Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:35:41.162614969Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:35:46.179808805Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:35:46.209774703Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:35:46.209898501Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:35:46.235540004Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:35:46.235584235Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:35:46.235598384Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:35:46.235608978Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:35:46.235619469Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:35:51.254781642Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:35:51.291972419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:35:51.292079943Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:35:51.315171921Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:35:51.315214758Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:35:51.3152293Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:35:51.315251464Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:35:51.315260725Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:35:56.335295727Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:35:56.362717761Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:35:56.362832228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:35:56.390262299Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:35:56.390305128Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:35:56.390318525Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:35:56.390330546Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:35:56.390340557Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:36:01.457001831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:36:01.556833038Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:36:01.557136676Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:36:01.611690923Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:36:01.611745646Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:36:01.611761338Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:36:01.611772175Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:36:01.611780452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:36:06.645425209Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:36:06.675910511Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:36:06.676009652Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:36:06.697978449Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:36:06.698031718Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:36:06.698070452Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:36:06.698116455Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:36:06.698125975Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:36:11.714771088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:36:11.744900934Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:36:11.745021096Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:36:11.768671181Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:36:11.76871239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:36:11.768726854Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:36:11.768738343Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:36:11.768747538Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:36:16.788362151Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:36:16.818551811Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:36:16.81864977Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:36:16.839352428Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:36:16.839393407Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:36:16.839416596Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:36:16.839427578Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:36:16.839436402Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:36:21.855293208Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:36:21.886022924Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:36:21.886149845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:36:21.906354049Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:36:21.906392681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:36:21.906405843Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:36:21.9064165Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:36:21.906425017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:36:26.924453851Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:36:26.953512945Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:36:26.953613066Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:36:26.974765574Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:36:26.974811314Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:36:26.974825359Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:36:26.974836554Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:36:26.974846781Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:36:31.996089616Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:36:32.027726407Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:36:32.027824087Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:36:32.051769259Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:36:32.051823575Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:36:32.051839446Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:36:32.051849972Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:36:32.051861343Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:36:37.066605055Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:36:37.097344756Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:36:37.097462327Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:36:37.120812611Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:36:37.120855988Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:36:37.120871441Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:36:37.12088163Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:36:37.120891543Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:36:42.139290884Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:36:42.167880347Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:36:42.167985942Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:36:42.189731924Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:36:42.189789611Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:36:42.189837612Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:36:42.189848117Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:36:42.189856489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:36:47.205755152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:36:47.234781151Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:36:47.234872275Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:36:47.259404894Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:36:47.259457433Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:36:47.259473636Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:36:47.259483515Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:36:47.259492407Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:36:52.277310333Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:36:52.306941433Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:36:52.307044009Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:36:52.332150711Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:36:52.332193817Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:36:52.332207377Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:36:52.332217894Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:36:52.332228053Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:36:57.350550886Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:36:57.38007705Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:36:57.380194788Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:36:57.401404294Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:36:57.401447476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:36:57.401461901Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:36:57.401472606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:36:57.401483723Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:37:02.419738659Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:37:02.449736246Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:37:02.449842834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:37:02.472954458Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:37:02.473005125Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:37:02.473020038Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:37:02.473030245Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:37:02.473037246Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:37:07.494622155Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:37:07.525603839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:37:07.525736773Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:37:07.550748123Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:37:07.550798346Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:37:07.550813079Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:37:07.550823655Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:37:07.550834881Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:37:12.566283855Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:37:12.595895328Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:37:12.595987753Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:37:12.624051811Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:37:12.624097987Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:37:12.62411161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:37:12.624124242Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:37:12.624133657Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:37:17.642430661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:37:17.671636803Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:37:17.671752512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:37:17.697858155Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:37:17.697902114Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:37:17.697916767Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:37:17.697927789Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:37:17.69793739Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:37:22.714393591Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:37:22.743723459Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:37:22.743848593Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:37:22.76808928Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:37:22.76813422Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:37:22.768149624Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:37:22.768161256Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:37:22.768171304Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:37:27.78318013Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:37:27.813526596Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:37:27.813636662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:37:27.834625649Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:37:27.834681021Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:37:27.834696915Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:37:27.834707346Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:37:27.834716101Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:37:32.851172156Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:37:32.880871394Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:37:32.880980234Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:37:32.901013048Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:37:32.901059654Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:37:32.901074304Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:37:32.901086272Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:37:32.901096035Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:37:37.919220506Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:37:37.947675245Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:37:37.947786495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:37:37.970703536Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:37:37.970753527Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:37:37.970768506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:37:37.970777811Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:37:37.970788422Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:37:42.989653501Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:37:43.0189306Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:37:43.019044146Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:37:43.040989958Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:37:43.041030877Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:37:43.041044986Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:37:43.041055588Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:37:43.041063877Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:37:48.062300782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:37:48.091339208Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:37:48.091448494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:37:48.111019271Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:37:48.111060263Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:37:48.111073708Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:37:48.111083801Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:37:48.111092793Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:37:53.127759692Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:37:53.157542932Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:37:53.157643318Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:37:53.18216388Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:37:53.182204293Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:37:53.182218548Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:37:53.1822306Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:37:53.182250713Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:37:58.198117637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:37:58.22951258Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:37:58.22961558Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:37:58.252577594Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:37:58.252625812Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:37:58.252640994Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:37:58.252652699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:38:03.268347324Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:38:03.300143239Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:38:03.300278272Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:38:03.320608724Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:38:03.320658532Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:38:03.320672023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:38:03.320682157Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:38:03.320690751Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:38:08.335818787Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:38:08.365477605Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:38:08.365588467Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:38:08.391867652Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:38:08.391910772Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:38:08.391925798Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:38:08.391950098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:38:08.391959429Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:38:13.409309712Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:38:13.439713454Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:38:13.43982129Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:38:13.462784475Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:38:13.462829116Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:38:13.462842155Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:38:13.462852335Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:38:13.462860969Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:38:18.480548199Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:38:18.509405957Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:38:18.509516894Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:38:18.53044245Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:38:18.530485273Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:38:23.545904009Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:38:23.575742045Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:38:23.57586014Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:38:23.599953116Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:38:23.599993882Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:38:23.60000842Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:38:23.600019172Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:38:23.600028958Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:38:28.614174613Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:38:28.64315652Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:38:28.643266481Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:38:28.662709983Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:38:28.662752326Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:38:28.66276687Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:38:33.678475396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:38:33.708177793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:38:33.708338749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:38:33.734876774Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:38:33.73493493Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:38:33.734950884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:38:33.734961582Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:38:33.734970481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:38:38.753715559Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:38:38.781448895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:38:38.781570256Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:38:38.804125815Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:38:38.804169891Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:38:38.804184853Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:38:38.804196276Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:38:38.804205503Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:38:43.818578226Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:38:43.849796023Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:38:43.849884695Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:38:43.872943988Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:38:43.872989137Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:38:43.873003149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:38:43.873012854Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:38:43.87302171Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:38:48.889392072Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:38:48.918461784Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:38:48.918557666Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:38:48.939028668Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:38:48.939070853Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:38:48.939085378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:38:48.939097497Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:38:48.939107098Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:38:53.955754609Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:38:53.985552328Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:38:53.985664158Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:38:54.011212652Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:38:54.011265106Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:38:54.011281293Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:38:54.011291419Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:38:54.011300412Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:38:59.029361833Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:38:59.058068895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:38:59.058157645Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:38:59.080691087Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:38:59.080748384Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:38:59.080764848Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:38:59.080774549Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:38:59.080782945Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:39:04.097787808Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:39:04.128996416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:39:04.129118024Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:39:04.150018057Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:39:04.150057059Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:39:09.165605828Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:39:09.194392693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:39:09.194643313Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:39:09.21875103Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:39:09.218792219Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:39:09.218805379Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:39:09.218816094Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:39:09.218826092Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:39:14.23453834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:39:14.263803128Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:39:14.263911609Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:39:14.286013148Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:39:14.286056279Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:39:14.286069964Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:39:14.286081219Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:39:14.286091268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:39:19.304195051Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:39:19.335210542Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:39:19.335328646Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:39:19.357835213Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:39:19.357894404Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:39:19.357909241Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:39:19.357918781Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:39:19.357927751Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:39:24.374263102Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:39:24.402888488Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:39:24.402978981Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:39:24.424790652Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:39:24.425209836Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:39:24.425245863Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:39:24.425259471Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:39:24.425271305Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:39:29.443014475Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:39:29.47192241Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:39:29.47203389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:39:29.493688032Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:39:29.493771432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:39:29.493786889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:39:29.493797155Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:39:29.493805649Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:39:34.50618807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:39:34.53631112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:39:34.536473461Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:39:34.557476037Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:39:34.557523031Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:39:34.55753722Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:39:34.557547583Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:39:34.557564295Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:39:39.576114594Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:39:39.606452787Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:39:39.606562503Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:39:39.630141159Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:39:39.630184984Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:39:39.630198717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:39:39.630209932Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:39:39.630219472Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:39:44.644991177Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:39:44.676164167Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:39:44.676264659Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:39:44.696186958Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:39:44.696229202Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:39:44.696254553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:39:44.696265129Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:39:44.696273679Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:39:49.710605257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:39:49.739469185Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:39:49.739569653Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:39:49.764329856Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:39:49.764375626Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:39:49.764390181Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:39:49.76440235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:39:49.764536782Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:39:54.78677351Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:39:54.814479823Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:39:54.814578671Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:39:54.836176706Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:39:54.836215742Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:39:54.836229891Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:39:54.836251666Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:39:54.836261368Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:39:59.866006499Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:39:59.898534876Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:39:59.898666717Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:39:59.920182626Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:39:59.920214837Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:39:59.920227718Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:39:59.92025009Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:40:04.936300173Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:40:04.96776341Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:40:04.967867857Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:40:04.994099912Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:40:04.994143449Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:40:04.994178239Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:40:04.994211205Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:40:04.994220104Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:40:10.013028549Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:40:10.043672858Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:40:10.043763217Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:40:10.067963474Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:40:10.068005002Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:40:10.068020899Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:40:10.068032482Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:40:10.068041653Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:40:15.085299579Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:40:15.116012631Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:40:15.116135745Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:40:15.143099656Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:40:15.143143747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:40:15.143168502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:40:15.14317962Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:40:15.143188422Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:40:20.161765799Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:40:20.19274191Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:40:20.192879242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:40:20.216785586Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:40:20.216829401Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:40:20.2168788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:40:20.216890714Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:40:20.216900468Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:40:25.233006965Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:40:25.263581792Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:40:25.263700067Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:40:25.285418227Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:40:25.285461829Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:40:25.285476176Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:40:25.285487674Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:40:25.285497419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:40:30.304296491Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:40:30.333578584Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:40:30.333687988Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:40:30.356743009Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:40:30.356796627Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:40:30.35681308Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:40:35.374507669Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:40:35.403530594Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:40:35.403623515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:40:35.426965174Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:40:35.42700728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:40:40.441100585Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:40:40.473200219Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:40:40.473311678Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:40:40.496298969Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:40:40.496344246Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:40:40.496360543Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:40:40.496369776Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:40:40.496378369Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:40:45.514217761Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:40:45.543805536Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:40:45.543910278Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:40:45.568386088Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:40:45.568554927Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:40:45.568571292Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:40:45.568582622Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:40:45.568592557Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:40:50.584897218Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:40:50.61490401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:40:50.614991799Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:40:50.638367815Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:40:50.638409335Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:40:50.638423073Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:40:50.638434599Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:40:50.638444356Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:40:55.656169717Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:40:55.687641175Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:40:55.687739416Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:40:55.710983951Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:40:55.71102741Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:40:55.711042613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:40:55.711053441Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:40:55.711064279Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:41:00.726089778Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:41:00.755275568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:41:00.755385824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:41:00.778666377Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:41:00.778786847Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:41:00.778803786Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:41:00.778814166Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:41:00.778832226Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:41:05.792294166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:41:05.82207115Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:41:05.822172405Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:41:05.845395716Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:41:05.845446454Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:41:05.845462249Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:41:05.84547128Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:41:05.845478666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:41:10.862026267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:41:10.890752622Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:41:10.890848468Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:41:10.912086323Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:41:10.912136883Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:41:10.912152302Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:41:10.912165302Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:41:10.912175728Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:41:15.928757224Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:41:15.959493697Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:41:15.959583208Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:41:15.983135323Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:41:15.983179724Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:41:15.983203502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:41:15.983213954Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:41:15.983222541Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:41:21.001337527Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:41:21.031912931Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:41:21.031994244Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:41:21.050887559Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:41:21.051371339Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:41:21.051394211Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:41:21.051503227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:41:21.051517105Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:41:26.07045258Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:41:26.099991456Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:41:26.100118888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:41:26.125737354Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:41:26.125782478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:41:26.125796121Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:41:26.125806082Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:41:26.125815923Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:41:31.147835654Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:41:31.177383194Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:41:31.177478962Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:41:31.203904403Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:41:31.20395294Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:41:31.203968463Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:41:31.203978657Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:41:31.203989635Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:41:36.219785345Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:41:36.247190838Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:41:36.247320728Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:41:36.27163551Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:41:36.271677448Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:41:36.271692539Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:41:36.271706198Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:41:36.271715171Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:41:41.292013229Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:41:41.321395049Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:41:41.321499338Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:41:41.344286824Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:41:41.344329842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:41:41.344344075Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:41:41.344355709Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:41:41.344365265Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:41:46.360522427Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:41:46.390117918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:41:46.390249305Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:41:46.416712262Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:41:46.416756181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:41:46.416771631Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:41:46.41679605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:41:46.416805152Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:41:51.435014483Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:41:51.465391081Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:41:51.465493906Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:41:51.48539522Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:41:51.485438786Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:41:51.485452552Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:41:51.485463801Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:41:51.485472306Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:41:56.503139301Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:41:56.533269286Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:41:56.53339096Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:41:56.560322064Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:41:56.560363517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:41:56.560377311Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:41:56.560387388Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:41:56.560398386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:42:01.591785775Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:42:01.72949801Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:42:01.729617725Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:42:01.892105308Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:42:01.892166263Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:42:01.892183871Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:42:01.892194702Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:42:01.892203765Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:42:06.908288078Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:42:06.938351314Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:42:06.938465143Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:42:06.961811993Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:42:06.961852586Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:42:06.961867425Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:42:06.961877142Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:42:06.9618882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:42:11.981033455Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:42:12.009619225Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:42:12.009737691Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:42:12.03186333Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:42:12.031905526Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:42:12.03192236Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:42:12.031932537Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:42:12.031942266Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:42:17.051447272Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:42:17.081302096Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:42:17.081394914Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:42:17.102220426Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:42:17.102278688Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:42:17.102293551Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:42:17.102304305Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:42:17.102313297Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:42:22.12014851Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:42:22.149475947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:42:22.149599214Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:42:22.169902321Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:42:22.169949894Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:42:22.169963797Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:42:22.169975285Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:42:22.169986112Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:42:27.185296563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:42:27.215470462Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:42:27.215561671Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:42:27.236580918Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:42:27.236634346Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:42:27.236651286Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:42:27.23666066Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:42:27.236669637Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:42:32.253216136Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:42:32.284774178Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:42:32.284889166Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:42:32.307618401Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:42:32.30766188Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:42:32.307675817Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:42:32.307686665Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:42:32.307695313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:42:37.323359477Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:42:37.352771699Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:42:37.35289697Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:42:37.37506326Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:42:37.37510591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:42:37.375120219Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:42:37.375131966Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:42:37.375141625Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:42:42.393022627Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:42:42.425108881Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:42:42.425228169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:42:42.450350885Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:42:42.450414527Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:42:42.450429535Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:42:42.450440098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:42:42.450448977Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:42:47.468784099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:42:47.497493332Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:42:47.497584275Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:42:47.517547435Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:42:47.517590692Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:42:47.517604286Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:42:47.517615332Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:42:47.517625455Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:42:52.537211534Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:42:52.564097673Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:42:52.564194814Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:42:52.588674435Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:42:52.588722144Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:42:52.588767598Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:42:52.588778736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:42:52.588787648Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:42:57.605302069Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:42:57.63376219Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:42:57.633883492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:42:57.654179589Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:42:57.65422268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:42:57.654250464Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:42:57.654262175Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:42:57.654270453Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:43:02.670099814Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:43:02.70176061Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:43:02.701860207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:43:02.727297436Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:43:02.727339913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:43:02.727354842Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:43:02.727365914Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:43:02.727375356Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:43:07.743227743Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:43:07.771760373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:43:07.771850731Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:43:07.794604213Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:43:07.794665464Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:43:07.794680628Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:43:07.794690788Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:43:07.794699072Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:43:12.817174262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:43:12.845602866Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:43:12.845727991Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:43:12.868711962Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:43:12.868756778Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:43:12.868771455Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:43:12.868782755Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:43:12.868792623Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:43:17.890288535Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:43:17.918927828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:43:17.919053608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:43:17.943308748Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:43:17.943350702Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:43:17.943364379Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:43:17.943375322Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:43:17.943383984Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:43:22.963084037Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:43:22.989815134Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:43:22.989898446Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:43:23.015555221Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:43:23.015610858Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:43:23.015625675Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:43:23.015636294Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:43:23.015644842Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:43:28.031148226Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:43:28.063035394Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:43:28.063128181Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:43:28.087426801Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:43:28.087490047Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:43:28.087504992Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:43:28.08751475Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:43:28.087523441Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:43:33.102363305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:43:33.134352358Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:43:33.134459612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:43:33.158036431Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:43:33.158096136Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:43:33.158111701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:43:33.158121647Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:43:33.158130476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:43:38.176785856Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:43:38.204951068Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:43:38.205039073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:43:38.229036086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:43:38.229083224Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:43:38.229096246Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:43:38.229109147Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:43:38.229118635Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:43:43.243104603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:43:43.271299755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:43:43.27141826Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:43:43.293796434Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:43:43.293838812Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:43:43.293853275Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:43:43.293865692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:43:43.293875029Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:43:48.310194407Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:43:48.340672128Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:43:48.340764195Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:43:48.364882645Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:43:48.364924432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:43:48.364955928Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:43:48.364991678Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:43:48.36500052Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:43:53.381699137Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:43:53.40751067Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:43:53.407639697Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:43:53.43051981Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:43:53.430560065Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:43:53.430573381Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:43:53.430586074Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:43:53.430595792Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:43:58.446804549Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:43:58.476322843Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:43:58.476487389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:43:58.501104276Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:43:58.501148444Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:43:58.501163055Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:43:58.50117553Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:43:58.501184722Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:44:03.51527912Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:44:03.547003287Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:44:03.547123501Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:44:03.571984354Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:44:03.572036412Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:44:03.57205226Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:44:03.572062171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:44:03.572143705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:44:08.591800191Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:44:08.621285712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:44:08.62139443Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:44:08.641803571Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:44:08.641875431Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:44:08.641889888Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:44:08.641899428Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:44:08.641907653Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:44:08.642036681Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T21:44:13.661277348Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:44:13.690543397Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:44:13.690647169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:44:13.713102682Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:44:13.713147579Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:44:13.713162233Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:44:13.713173827Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:44:13.713182929Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:44:18.730900935Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:44:18.761562457Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:44:18.761661756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:44:18.787313731Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:44:18.78735727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:44:18.787373028Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:44:18.787397009Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:44:18.787406705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:44:23.803770045Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:44:23.834439695Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:44:23.834567781Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:44:23.854810883Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:44:23.854859409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:44:23.854874316Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:44:23.854885724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:44:23.854896004Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:44:28.873260962Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:44:28.902998772Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:44:28.903127417Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:44:28.929680392Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:44:28.929727608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:44:28.929765486Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:44:28.929776338Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:44:28.929793742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:44:33.946203804Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:44:33.975360316Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:44:33.975472774Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:44:33.995144041Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:44:33.995186256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:44:33.995200305Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:44:33.99524818Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:44:33.995258581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:44:39.013495916Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:44:39.043967295Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:44:39.044048957Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:44:39.069776512Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:44:39.069817239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:44:39.06983066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:44:39.069841776Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:44:39.069852057Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:44:44.087718508Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:44:44.119299595Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:44:44.119397523Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:44:44.145222499Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:44:44.145280649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:44:44.145296779Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:44:44.145332962Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:44:44.145343103Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:44:49.164295133Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:44:49.196572087Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:44:49.196656637Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:44:49.218372307Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:44:49.218420507Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:44:49.218434414Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:44:49.218479959Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:44:49.218489744Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:44:54.238727829Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:44:54.267080266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:44:54.267206522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:44:54.289557236Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:44:54.289602744Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:44:54.289618283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:44:54.289630093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:44:54.289639979Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:44:59.30415532Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:44:59.334431936Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:44:59.334546344Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:44:59.354941344Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:44:59.354981075Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:44:59.354995282Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:44:59.355006547Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:44:59.355016567Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:45:04.374285441Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:45:04.405505024Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:45:04.405599403Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:45:04.426550239Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:45:04.426613921Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:45:04.426629994Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:45:04.42664044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:45:04.426649195Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:45:09.441856067Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:45:09.47269964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:45:09.472805048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:45:09.496174Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:45:09.496218314Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:45:09.496245949Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:45:09.496259306Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:45:09.496268058Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:45:14.513697211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:45:14.543140978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:45:14.543269285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:45:14.56662359Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:45:14.566666695Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:45:14.566694868Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:45:14.566707121Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:45:14.566715915Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:45:19.585655713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:45:19.615094839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:45:19.615185889Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:45:19.637154001Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:45:19.637197545Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:45:19.637211035Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:45:19.637222091Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:45:19.637230888Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:45:24.652673785Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:45:24.682133447Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:45:24.682279089Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:45:24.703256593Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:45:24.703300564Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:45:24.703313637Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:45:24.703324381Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:45:24.703334446Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:45:29.723314971Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:45:29.752018661Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:45:29.752112127Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:45:29.77489172Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:45:29.774932356Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:45:29.774946045Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:45:29.774957393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:45:29.774967367Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:45:34.78994572Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:45:34.820332168Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:45:34.820556919Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:45:34.841688101Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:45:34.841732257Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:45:34.84174789Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:45:34.841760059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:45:34.841770283Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:45:39.856215728Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:45:39.882861442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:45:39.882958297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:45:39.906516629Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:45:39.906563048Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:45:39.906577985Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:45:39.906588661Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:45:39.906597223Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:45:44.925282651Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:45:44.956258375Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:45:44.956390989Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:45:44.979782934Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:45:44.979854378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:45:44.979870565Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:45:44.979880356Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:45:44.979956531Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:45:49.998450284Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:45:50.026020716Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:45:50.026160812Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:45:50.050605164Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:45:50.050653003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:45:50.050667843Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:45:50.050678525Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:45:50.050687558Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:45:55.06830441Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:45:55.098718398Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:45:55.098801431Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:45:55.120945524Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:45:55.120987523Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:45:55.121001064Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:45:55.121013382Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:45:55.121023209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:46:00.14512838Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:46:00.195795082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:46:00.195986547Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:46:00.227673281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:46:00.227731285Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:46:00.227745861Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:46:00.227755166Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:46:00.227764512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:46:05.2476948Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:46:05.276986058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:46:05.277122359Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:46:05.298724505Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:46:05.298779816Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:46:05.298796637Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:46:05.298806613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:46:05.298815616Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:46:10.316378005Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:46:10.347951098Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:46:10.348071315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:46:10.370250947Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:46:10.370306839Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:46:10.370321813Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:46:10.370333798Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:46:10.370342479Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:46:15.386948931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:46:15.415833368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:46:15.415944479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:46:15.436220333Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:46:15.436276172Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:46:20.451763612Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:46:20.481217174Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:46:20.48134428Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:46:20.503435453Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:46:20.503475617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:46:20.503489334Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:46:20.503500963Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:46:20.503509217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:46:25.519564397Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:46:25.551687075Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:46:25.551796765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:46:25.574058114Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:46:25.574118381Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:46:25.574133482Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:46:25.574142909Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:46:25.574151749Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:46:30.590733066Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:46:30.62240175Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:46:30.622523387Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:46:30.643151113Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:46:30.643218769Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:46:30.64327184Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:46:30.64330859Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:46:30.643444062Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T21:46:30.643492763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:46:35.663152183Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:46:35.693254405Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:46:35.693372616Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:46:35.71912908Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:46:35.719176052Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:46:35.719190531Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:46:35.719201915Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:46:35.719212368Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:46:40.738441489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:46:40.766828964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:46:40.766949386Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:46:40.78872797Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:46:40.788775009Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:46:40.788790529Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:46:40.788803063Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:46:40.788813096Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:46:45.808853482Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:46:45.839299815Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:46:45.839405835Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:46:45.859587091Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:46:45.859646319Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:46:45.859659996Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:46:45.859703387Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:46:45.859713064Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:46:50.880559484Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:46:50.9089168Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:46:50.909044297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:46:50.932148126Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:46:50.932198238Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:46:50.932212291Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:46:50.932223798Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:46:50.932309702Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:46:55.948357653Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:46:55.980971291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:46:55.981066971Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:46:56.0035966Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:46:56.003654577Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:46:56.003669914Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:46:56.003678856Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:46:56.0036876Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:47:01.020925481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:47:01.049547553Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:47:01.049641479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:47:01.071593887Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:47:01.071650724Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:47:01.071675111Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:47:01.071684108Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:47:01.071693377Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:47:06.089450084Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:47:06.118723188Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:47:06.118818527Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:47:06.141086762Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:47:06.141147787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:47:06.141162777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:47:06.141173625Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:47:06.141182213Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:47:11.155157167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:47:11.187410312Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:47:11.187500426Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:47:11.210691302Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:47:11.210734172Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:47:11.210748391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:47:11.210759433Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:47:11.210769801Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:47:16.228276325Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:47:16.257516412Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:47:16.257608505Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:47:16.278599224Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:47:16.27867255Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:47:16.278690738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:47:21.304462927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:47:21.333381144Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:47:21.3335064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:47:21.358850536Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:47:21.358895505Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:47:21.358928788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:47:21.358940496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:47:21.358950075Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:47:26.378232466Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:47:26.408857824Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:47:26.408967448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:47:26.432122243Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:47:26.432165189Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:47:26.432179848Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:47:26.4321928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:47:26.432202749Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:47:31.450850901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:47:31.483262061Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:47:31.483366499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:47:31.504510448Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:47:31.504553179Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:47:31.504567099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:47:31.504577978Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:47:31.504586618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:47:36.522274647Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:47:36.553355609Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:47:36.553477555Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:47:36.577549444Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:47:36.577594986Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:47:36.577608766Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:47:36.577640587Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:47:36.577650644Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:47:41.593018412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:47:41.624211243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:47:41.624338967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:47:41.648231447Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:47:41.648285423Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:47:41.648302392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:47:41.648314277Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:47:41.648323588Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:47:46.664628026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:47:46.696788948Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:47:46.696881954Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:47:46.718881632Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:47:46.718926905Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:47:46.718940731Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:47:46.7189532Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:47:46.718962572Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:47:51.737188355Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:47:51.769116717Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:47:51.769206207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:47:51.793543006Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:47:51.793587393Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:47:51.793603193Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:47:51.793624565Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:47:51.79363463Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:47:56.81308294Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:47:56.841687058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:47:56.841777719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:47:56.863584359Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:47:56.863625343Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:47:56.863639825Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:47:56.863650588Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:47:56.863659148Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:48:01.916987474Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:48:02.047371411Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:48:02.047499099Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:48:02.179269551Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:48:02.179326709Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:48:02.17934281Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:48:02.179383066Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:48:02.179392696Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:48:07.197222067Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:48:07.227631822Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:48:07.227732115Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:48:07.253003886Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:48:07.253066791Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:48:07.253081557Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:48:07.253092852Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:48:07.253101996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:48:12.269279368Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:48:12.298400168Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:48:12.298500325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:48:12.318292621Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:48:12.318335965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:48:12.318349519Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:48:12.318360267Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:48:12.318368932Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:48:17.339287999Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:48:17.372652976Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:48:17.372776261Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:48:17.395596743Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:48:17.395653978Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:48:17.395668584Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:48:17.395677793Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:48:17.395686408Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:48:22.41174302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:48:22.439393404Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:48:22.439486972Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:48:22.459548315Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:48:22.45959227Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:48:22.459606898Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:48:22.459618186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:48:22.459627311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:48:27.476286875Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:48:27.502939883Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:48:27.503046641Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:48:27.524489166Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:48:27.524532443Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:48:27.52454587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:48:27.524556969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:48:27.524566544Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:48:32.538786223Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:48:32.568068933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:48:32.568160508Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:48:32.591163643Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:48:32.591211335Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:48:32.591224556Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:48:32.591356145Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:48:32.591371687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:48:37.604289175Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:48:37.633099152Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:48:37.633213509Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:48:37.656844358Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:48:37.656905998Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:48:37.656921196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:48:37.656930269Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:48:37.656958152Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:48:42.677305253Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:48:42.707104355Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:48:42.707200154Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:48:42.730783027Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:48:42.730821815Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:48:42.730835591Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:48:42.730847567Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:48:47.751314564Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:48:47.77974342Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:48:47.779855248Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:48:47.803375091Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:48:47.803441489Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:48:47.80345544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:48:47.803464841Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:48:47.803473283Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:48:52.819293208Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:48:52.847690387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:48:52.847780476Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:48:52.871185486Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:48:52.871264555Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:48:52.871292042Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:48:52.871313093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:48:52.871322542Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:48:57.887296005Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:48:57.915963846Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:48:57.91607316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:48:57.936833588Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:48:57.936871946Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:48:57.93688658Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:48:57.936908421Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:48:57.936919046Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:49:02.955607898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:49:02.986089233Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:49:02.9862157Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:49:03.008313186Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:49:03.008357156Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:49:03.008372112Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:49:03.008560757Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:49:03.008574265Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:49:08.024068602Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:49:08.05541383Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:49:08.055508162Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:49:08.075937511Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:49:08.075981674Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:49:08.075995539Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:49:08.076013004Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:49:08.076023194Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:49:13.094221426Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:49:13.124846547Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:49:13.124940696Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:49:13.145542173Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:49:13.145589434Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:49:13.145606016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:49:13.145616626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:49:13.14562727Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:49:18.165581227Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:49:18.192032161Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:49:18.192128017Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:49:18.217624799Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:49:18.217670501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:49:18.217685965Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:49:18.21769626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:49:18.217705968Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:49:23.235079742Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:49:23.264817863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:49:23.264916118Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:49:23.289289577Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:49:23.289330267Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:49:23.289345242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:49:23.289355559Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:49:23.289365355Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:49:28.306953817Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:49:28.336965148Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:49:28.337059735Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:49:28.360794084Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:49:28.360855543Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:49:28.360872285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:49:28.360881877Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:49:28.360891305Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:49:33.375701465Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:49:33.406744305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:49:33.406856176Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:49:33.432679026Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:49:33.432730368Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:49:33.432770731Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:49:33.432782675Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:49:33.432793915Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:49:38.449256879Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:49:38.477011147Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:49:38.477135367Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:49:38.501476326Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:49:38.501517763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:49:38.501530696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:49:38.501541269Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:49:38.501552132Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:49:43.515806606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:49:43.545609819Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:49:43.545711637Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:49:43.567025785Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:49:43.567107932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:49:43.567126862Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:49:43.567136956Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:49:43.567145395Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:49:48.584227304Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:49:48.614187971Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:49:48.614326781Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:49:48.638403603Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:49:48.63844726Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:49:48.638462241Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:49:48.638473547Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:49:48.638484501Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:49:53.65430108Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:49:53.685324531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:49:53.685437098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:49:53.70815203Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:49:53.708194575Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:49:53.708223318Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:49:53.708275779Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:49:53.708286618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:49:58.728108658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:49:58.755266454Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:49:58.75536775Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:49:58.779503674Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:49:58.779569882Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:49:58.779585641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:49:58.77959568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:49:58.779604181Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:50:03.822344419Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:50:03.851628629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:50:03.851755923Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:50:03.87780919Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:50:03.877851236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:50:03.877865508Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:50:03.877875386Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:50:03.877883907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:50:08.898527193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:50:08.930259598Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:50:08.930380714Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:50:08.952052664Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:50:08.952107921Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:50:08.952123288Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:50:08.95213316Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:50:08.952257295Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T21:50:08.952661125Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:50:13.970116597Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:50:13.999746641Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:50:13.999858839Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:50:14.02247559Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:50:14.022537289Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:50:14.022551873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:50:14.022563019Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:50:14.022572778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:50:19.041303704Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:50:19.069140389Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:50:19.069231472Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:50:19.089613817Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:50:19.089658774Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:50:19.089695644Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:50:19.089723655Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:50:19.08974523Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:50:24.107007519Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:50:24.137813225Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:50:24.137915513Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:50:24.157963053Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:50:24.1580039Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:50:24.15801792Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:50:24.158028819Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:50:24.158037783Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:50:29.174273126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:50:29.201999555Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:50:29.202080641Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:50:29.230455318Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:50:29.230496121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:50:29.23050967Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:50:29.230521845Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:50:29.230531521Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:50:34.247197842Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:50:34.274463079Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:50:34.274553561Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:50:34.294573505Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:50:34.294617413Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:50:34.294631119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:50:34.294642441Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:50:34.294652287Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:50:39.313643056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:50:39.343639214Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:50:39.343733975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:50:39.367736707Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:50:39.367780936Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:50:39.367795171Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:50:39.367804915Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:50:39.367813413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:50:44.385292091Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:50:44.414051342Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:50:44.41414432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:50:44.434138126Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:50:44.434185292Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:50:44.43419926Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:50:44.434209181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:50:44.434219715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:50:49.45434843Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:50:49.483127345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:50:49.483221682Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:50:49.505184373Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:50:49.505228044Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:50:49.505257502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:50:49.505279989Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:50:49.505289829Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:50:54.5227634Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:50:54.55269867Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:50:54.552810175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:50:54.573667278Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:50:54.57370879Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:50:54.573722576Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:50:54.573733864Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:50:54.573743782Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:50:59.58820261Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:50:59.619613027Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:50:59.619718955Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:50:59.642026941Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:50:59.642070422Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:50:59.642084247Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:50:59.642095678Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:50:59.642104914Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:51:04.658849837Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:51:04.689075466Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:51:04.689190873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:51:04.709266368Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:51:04.709308591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:51:04.70932283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:51:04.709333589Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:51:04.709342435Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:51:09.728569633Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:51:09.759382918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:51:09.759500487Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:51:09.782246486Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:51:09.782292142Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:51:09.782307717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:51:09.782318637Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:51:09.782327261Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:51:14.801207254Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:51:14.830430507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:51:14.830521954Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:51:14.853352841Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:51:14.853395891Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:51:14.853417807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:51:14.853451678Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:51:14.853460774Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:51:19.874452718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:51:19.903420251Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:51:19.903536604Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:51:19.927370173Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:51:19.927412173Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:51:19.927425957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:51:19.927436134Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:51:19.927445492Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:51:24.942763224Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:51:24.972796168Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:51:24.972921568Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:51:24.995290741Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:51:24.995336646Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:51:24.995350479Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:51:24.995363227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:51:24.995372579Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:51:30.046207645Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:51:30.080729569Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:51:30.080839282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:51:30.101542192Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:51:30.101592667Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:51:30.101681409Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:51:30.101694281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:51:30.101704131Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:51:35.117404659Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:51:35.149669845Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:51:35.149784293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:51:35.174567756Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:51:35.174612927Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:51:35.1746266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:51:35.17463792Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:51:35.174650699Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:51:40.195300866Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:51:40.225060191Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:51:40.22517242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:51:40.250760946Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:51:40.250807921Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:51:40.250823511Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:51:40.250832658Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:51:40.250840076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:51:45.269136861Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:51:45.299095712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:51:45.299202764Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:51:45.320973626Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:51:45.321019615Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:51:45.321035098Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:51:45.321046622Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:51:45.321056268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:51:50.33827211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:51:50.367745806Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:51:50.367845367Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:51:50.395490632Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:51:50.395536639Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:51:50.39554971Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:51:50.395561511Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:51:50.395571787Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:51:55.408148068Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:51:55.44101977Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:51:55.441140087Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:51:55.465782746Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:51:55.465822993Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:51:55.465837362Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:51:55.465847395Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:51:55.465855927Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:52:00.484525488Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:52:00.51446036Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:52:00.514575454Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:52:00.5374251Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:52:00.537470444Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:52:00.537486198Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:52:00.537497882Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:52:00.537507489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:52:05.554976013Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:52:05.587605794Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:52:05.587699692Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:52:05.608734705Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:52:05.609170162Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:52:05.609380046Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:52:05.609424189Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:52:05.609436797Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:52:10.626027947Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:52:10.656135761Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:52:10.656266617Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:52:10.679759412Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:52:10.679806623Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:52:10.679837367Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:52:10.679849903Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:52:10.679860945Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:52:15.697890022Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:52:15.725479917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:52:15.725605683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:52:15.750488969Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:52:15.750530558Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:52:15.750543575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:52:15.750554935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:52:15.750565354Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:52:20.768172443Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:52:20.795660173Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:52:20.795759717Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:52:20.819783089Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:52:20.819826524Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:52:20.819840908Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:52:20.819851532Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:52:20.819860588Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:52:25.838341537Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:52:25.867132006Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:52:25.867253739Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:52:25.889336549Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:52:25.889378543Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:52:25.889409491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:52:25.889420203Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:52:25.889428891Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:52:30.90819439Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:52:30.93579105Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:52:30.935907903Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:52:30.959607673Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:52:30.959650989Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:52:30.959665479Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:52:30.959676291Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:52:35.976381694Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:52:36.027018644Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:52:36.027147347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:52:36.069229271Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:52:36.069294132Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:52:36.069308183Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:52:36.069318575Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:52:36.069328689Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:52:41.088157428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:52:41.118595963Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:52:41.11871798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:52:41.14304218Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:52:41.143520742Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:52:41.1437774Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:52:41.144124202Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:52:41.144139658Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:52:46.161353086Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:52:46.189353582Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:52:46.190928482Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:52:46.213602675Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:52:46.213664616Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:52:46.213680433Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:52:46.213724467Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:52:46.213734295Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:52:51.232351651Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:52:51.262198237Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:52:51.262335632Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:52:51.287528076Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:52:51.287573681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:52:51.287587604Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:52:51.287597619Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:52:51.287608865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:52:56.303058997Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:52:56.332427242Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:52:56.332591794Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:52:56.3570903Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:52:56.357138995Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:52:56.357155422Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:52:56.357166066Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:52:56.3571759Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:53:01.37653501Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:53:01.41878038Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:53:01.418898792Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:53:01.444725489Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:53:01.444777269Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:53:01.44479217Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:53:01.444803111Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:53:01.444812542Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:53:06.462186015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:53:06.49072129Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:53:06.490824362Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:53:06.516044782Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:53:06.51610386Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:53:06.516118939Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:53:06.516129526Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:53:06.516138434Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:53:11.536573502Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:53:11.563560903Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:53:11.563670834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:53:11.589537958Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:53:11.589901075Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:53:11.589922137Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:53:11.589934284Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:53:11.589945592Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:53:16.607309986Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:53:16.634871781Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:53:16.634963469Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:53:16.656639263Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:53:16.656684728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:53:16.656698506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:53:16.656710573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:53:16.656720425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:53:21.675090432Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:53:21.705266401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:53:21.705358937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:53:21.730003248Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:53:21.730045385Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:53:21.730075831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:53:21.730086445Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:53:21.73009526Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:53:26.748601434Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:53:26.780368094Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:53:26.780583416Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:53:26.803309426Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:53:26.803350259Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:53:26.803364812Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:53:26.803375938Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:53:26.803384843Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:53:31.822531769Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:53:31.853307362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:53:31.85339829Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:53:31.87615686Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:53:31.876207077Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:53:31.87622224Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:53:31.876248107Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:53:31.876258081Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:53:36.891729089Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:53:36.922545846Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:53:36.922641533Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:53:36.944607446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:53:36.94466576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:53:36.944681714Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:53:36.944692751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:53:36.944700981Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:53:41.963090833Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:53:41.991370474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:53:41.991481371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:53:42.012606677Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:53:42.012675474Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:53:42.012690376Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:53:42.012699603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:53:42.012707852Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:53:47.030613196Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:53:47.06156088Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:53:47.061690424Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:53:47.085044533Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:53:47.085090732Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:53:47.085104647Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:53:47.08511692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:53:47.085127343Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:53:52.105278738Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:53:52.134848978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:53:52.134959393Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:53:52.15708535Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:53:52.157131359Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:53:52.157145776Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:53:52.157157392Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:53:52.157167097Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:53:57.17332043Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:53:57.203720354Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:53:57.203826719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:53:57.228225138Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:53:57.228319787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:53:57.228334652Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:53:57.228344345Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:53:57.228353486Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:54:02.26561129Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:54:02.357408577Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:54:02.357772137Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:54:02.391462596Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:54:02.391508946Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:54:02.391523607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:54:02.391535936Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:54:02.391619989Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:54:07.407331273Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:54:07.435375285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:54:07.435491479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:54:07.461357573Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:54:07.461399999Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:54:07.461426495Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:54:07.46143668Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:54:07.461445045Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:54:12.483286616Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:54:12.513345167Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:54:12.513470519Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:54:12.539359966Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:54:12.539400129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:54:12.539414153Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:54:12.539424951Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:54:12.539434983Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:54:17.559505474Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:54:17.587063033Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:54:17.5871823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:54:17.611160691Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:54:17.611201099Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:54:17.611215549Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:54:17.611342731Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:54:17.611355345Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:54:22.630552108Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:54:22.660324239Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:54:22.66058448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:54:22.681107937Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:54:22.681151863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:54:22.68116523Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:54:22.681176801Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:54:27.694449922Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:54:27.723563676Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:54:27.72368356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:54:27.746281508Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:54:27.746322572Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:54:27.746337052Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:54:27.746348493Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:54:27.746357515Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:54:32.769269166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:54:32.798971184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:54:32.799069976Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:54:32.825724005Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:54:32.825767439Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:54:32.825781399Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:54:32.825792334Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:54:32.825801232Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:54:37.842467584Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:54:37.870558813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:54:37.870677847Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:54:37.894714745Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:54:37.894772625Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:54:37.894786536Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:54:37.894796658Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:54:37.894804623Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:54:42.908888726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:54:42.93695919Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:54:42.937069931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:54:42.961132717Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:54:42.961185765Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:54:42.961202208Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:54:42.961212091Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:54:42.961220757Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:54:47.979779532Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:54:48.010448465Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:54:48.010574783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:54:48.036742464Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:54:48.036806412Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:54:48.036821861Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:54:48.036832068Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:54:48.036841217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:54:53.057216052Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:54:53.088357351Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:54:53.088485295Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:54:53.111367272Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:54:53.111417029Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:54:58.128172301Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:54:58.158668067Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:54:58.158794165Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:54:58.181991157Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:54:58.182033343Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:54:58.182047415Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:54:58.182075766Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:54:58.182086121Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:55:03.201087832Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:55:03.237605082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:55:03.237715321Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:55:03.263117063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:55:03.263165624Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:55:03.263179641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:55:03.263189287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:55:03.263199823Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:55:08.281449629Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:55:08.309854603Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:55:08.309970415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:55:08.329898703Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:55:08.329942028Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:55:08.329956993Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:55:08.329968042Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:55:08.329977452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:55:13.344401604Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:55:13.374075231Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:55:13.374206791Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:55:13.397352226Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:55:13.39781369Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:55:13.398014256Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:55:13.398177415Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:55:13.398341974Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:55:18.41569002Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:55:18.446321538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:55:18.446439665Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:55:18.467178818Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:55:18.467222248Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:55:18.467249589Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:55:18.467272517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:55:18.467281734Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:55:23.486757969Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:55:23.513258318Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:55:23.513375841Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:55:23.534444873Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:55:23.534493358Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:55:23.534507738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:55:23.534518731Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:55:23.534526331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:55:28.553770433Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:55:28.583333796Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:55:28.583441158Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:55:28.602979447Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:55:28.603020331Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:55:28.603033475Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:55:28.603044353Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:55:28.603054809Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:55:33.618920259Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:55:33.649106917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:55:33.649200529Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:55:33.672582319Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:55:33.672628727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:55:33.672644662Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:55:38.688030929Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:55:38.718675162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:55:38.718790038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:55:38.743085149Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:55:38.743126641Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:55:38.743141301Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:55:38.743153259Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:55:38.74316236Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:55:43.757474346Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:55:43.787075434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:55:43.78718657Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:55:43.813835854Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:55:43.814300251Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:55:43.814533773Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:55:43.814999861Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:55:43.815199715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:55:48.833284938Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:55:48.863325232Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:55:48.863420363Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:55:48.888559398Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:55:48.888602729Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:55:48.888616532Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:55:48.888627267Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:55:48.888636329Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:55:53.905297768Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:55:53.933531753Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:55:53.933619774Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:55:53.958229061Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:55:53.958283862Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:55:53.958297823Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:55:53.958309743Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:55:53.958320198Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:55:58.974370995Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:55:59.003054118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:55:59.003163999Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:55:59.026510011Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:55:59.026567167Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:56:04.041009838Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:56:04.072073632Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:56:04.072186357Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:56:04.09531727Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:56:04.095366013Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:56:04.095381443Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:56:04.095392738Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:56:09.112656341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:56:09.143028328Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:56:09.143131385Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:56:09.163146148Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:56:09.16318903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:56:09.163204355Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:56:09.163215544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:56:09.163225251Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:56:14.179209257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:56:14.209010214Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:56:14.20912354Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:56:14.234644072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:56:14.235017542Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:56:14.235039639Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:56:14.235052375Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:56:14.235063688Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:56:19.253290077Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:56:19.2820665Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:56:19.28217809Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:56:19.30359498Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:56:19.303637881Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:56:19.30365137Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:56:19.303684914Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:56:19.303694054Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:56:24.322219865Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:56:24.35271985Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:56:24.352844915Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:56:24.376743105Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:56:24.376793992Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:56:24.376807349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:56:24.376818886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:56:24.376829845Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:56:29.394163444Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:56:29.421680151Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:56:29.421775673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:56:29.446334424Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:56:29.446387505Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:56:29.446403128Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:56:29.44641404Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:56:29.446422557Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:56:34.462287514Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:56:34.491482028Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:56:34.491575337Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:56:34.517382945Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:56:34.517776962Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:56:34.517797024Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:56:34.517810258Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:56:34.517821313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:56:39.538202764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:56:39.567860192Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:56:39.567985298Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:56:39.592103652Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:56:39.592146749Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:56:39.592163024Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:56:39.592174217Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:56:39.592184105Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:56:44.609924849Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:56:44.639624046Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:56:44.639737465Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:56:44.663292299Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:56:44.663333353Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:56:44.663348191Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:56:44.663359506Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:56:44.663369054Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:56:49.680886565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:56:49.711145894Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:56:49.711268331Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:56:49.733506602Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:56:49.733545824Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:56:49.733576785Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:56:49.73361046Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:56:49.733620226Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:56:54.750931908Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:56:54.779819293Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:56:54.779911576Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:56:54.802988305Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:56:54.80303106Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:56:54.803044449Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:56:54.80305598Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:56:54.803066136Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:56:59.822636804Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:56:59.851503524Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:56:59.851588713Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:56:59.876915422Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:56:59.876959554Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:56:59.876975041Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:56:59.876985695Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:56:59.876995404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:57:04.895576772Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:57:04.925413714Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:57:04.925530186Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:57:04.949480899Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:57:04.949523248Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:57:04.949538438Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:57:04.949550938Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:57:04.949561272Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:57:09.967706368Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:57:09.998647189Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:57:09.998739831Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:57:10.022763546Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:57:10.022827858Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:57:10.022843808Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:57:10.022854805Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:57:10.022863643Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:57:15.042292787Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:57:15.071677285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:57:15.071778734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:57:15.094258084Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:57:15.094298363Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:57:15.094312373Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:57:15.094321879Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:57:15.094331823Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:57:20.110906456Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:57:20.141015139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:57:20.141128638Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:57:20.164421004Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:57:20.164573106Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:57:20.164589158Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:57:20.164599247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:57:20.164609417Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:57:25.181087007Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:57:25.209333582Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:57:25.209447493Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:57:25.236739615Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:57:25.236779872Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:57:25.236793716Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:57:25.236804883Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:57:25.236814367Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:57:30.257616382Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:57:30.290972983Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:57:30.29107706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:57:30.314161216Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:57:30.314205675Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:57:30.314219483Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:57:30.31426666Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:57:30.314276512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:57:35.3312974Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:57:35.359117714Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:57:35.35925732Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:57:35.384275161Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:57:35.384316592Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:57:35.384331191Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:57:35.3843427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:57:35.384352345Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:57:40.402179323Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:57:40.431104186Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:57:40.431216162Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:57:40.453627378Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:57:40.453700255Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:57:40.453717291Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:57:40.453772044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:57:40.453783187Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:57:45.471331496Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:57:45.499696203Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:57:45.499819987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:57:45.52061713Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:57:45.520657682Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:57:45.520671939Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:57:45.520682714Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:57:45.52069146Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:57:50.540569815Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:57:50.571315607Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:57:50.57142788Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:57:50.595612843Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:57:50.595674171Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:57:50.595689851Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:57:50.595700228Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:57:50.595709704Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:57:55.612465687Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:57:55.642770402Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:57:55.642857509Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:57:55.666824216Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:57:55.666860159Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:57:55.666874365Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:57:55.66688469Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:57:55.666894439Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:58:00.683272643Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:58:00.712890625Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:58:00.712983559Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:58:00.737367686Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:58:00.73741595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:58:00.737432352Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:58:00.737462012Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:58:00.737472031Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:58:05.75870829Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:58:05.787141777Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:58:05.787265066Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:58:05.808896425Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:58:05.808936446Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:58:05.808951521Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:58:05.808963729Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:58:05.808973258Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:58:10.830964847Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:58:10.860927929Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:58:10.861022877Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:58:10.883562086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:58:10.883612948Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:58:10.883628313Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:58:10.883638781Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:58:10.883647412Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:58:15.902523642Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:58:15.929324434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:58:15.929415057Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:58:15.954862226Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:58:15.954918081Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:58:15.954933516Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:58:15.954974344Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:58:15.954991044Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:58:20.971312388Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:58:21.001684063Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:58:21.001778762Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:58:21.027152362Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:58:21.027195474Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:58:21.027210014Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:58:21.027222425Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:58:21.027243005Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:58:26.04394606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:58:26.074513699Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:58:26.074622839Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:58:26.098589067Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:58:26.098639023Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:58:26.098653341Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:58:26.098664113Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:58:26.098674759Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:58:31.124265181Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:58:31.155179522Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:58:31.155305907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:58:31.180420974Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:58:31.180575943Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:58:31.180591277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:58:31.180602338Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:58:31.180611671Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:58:36.196271378Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:58:36.226448409Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:58:36.226558498Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:58:36.25069627Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:58:36.250737355Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:58:36.250749866Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:58:36.250770561Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:58:36.250779414Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:58:41.268300419Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:58:41.300192596Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:58:41.300304689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:58:41.321150773Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:58:41.321204824Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:58:41.321219008Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:58:41.321269904Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:58:41.32128052Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:58:46.339291252Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:58:46.367588343Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:58:46.367681845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:58:46.393686902Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:58:46.393743313Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:58:46.393758873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:58:46.393768802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:58:46.393778734Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:58:51.413394796Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:58:51.4450765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:58:51.445169366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:58:51.470808052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:58:51.470847328Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:58:51.470862192Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:58:51.470874719Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:58:51.470885365Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:58:56.489294994Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:58:56.518398126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:58:56.518488967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:58:56.540886125Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:58:56.540927768Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:58:56.540959433Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:58:56.540971184Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:58:56.54097915Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:59:01.561277343Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:59:01.591224384Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:59:01.591326628Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:59:01.614538877Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:59:01.614589815Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:59:01.614652445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:59:01.614663767Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:59:01.614672951Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:59:06.631266622Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:59:06.661666303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:59:06.661782772Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:59:06.689121395Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:59:06.689168155Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:59:06.689185911Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:59:06.689195544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:59:06.689213949Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:59:11.709577239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:59:11.742190926Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:59:11.742330824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:59:11.767112313Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:59:11.767151164Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:59:11.767165548Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:59:16.786309475Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:59:16.814757914Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:59:16.814877611Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:59:16.840268448Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:59:16.840322687Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:59:16.840336775Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:59:16.840348964Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:59:16.840357416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:59:21.85319844Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:59:21.885693961Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:59:21.885808049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:59:21.909231145Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:59:21.909289158Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:59:21.909313342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:59:21.909351576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:59:21.909360598Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:59:26.932879334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:59:26.961800109Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:59:26.961904072Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:59:26.984930677Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:59:26.984969442Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:59:26.985024172Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:59:26.985036044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:59:26.985052785Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:59:31.999452915Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:59:32.027425643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:59:32.027522749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:59:32.050759038Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:59:32.050806103Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:59:32.050822665Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:59:32.050833017Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:59:32.050842997Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:59:37.066874913Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:59:37.098181929Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:59:37.098320285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:59:37.126582885Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:59:37.126886179Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:59:37.126907992Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:59:37.126927614Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:59:37.12693814Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:59:42.146972635Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:59:42.17713565Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:59:42.177254516Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:59:42.19961563Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:59:42.199660113Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:59:42.199674422Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:59:42.199685103Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:59:42.199694808Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:59:47.218694352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:59:47.246547563Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:59:47.246655161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:59:47.272142328Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:59:47.272187378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:59:47.272202694Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:59:47.272213149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:59:47.272222999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:59:52.288351401Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:59:52.318476077Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:59:52.318569127Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:59:52.343442939Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:59:52.343485313Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:59:52.343499245Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:59:52.343508153Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:59:52.343517716Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T21:59:57.357155602Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T21:59:57.385758279Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T21:59:57.385855273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T21:59:57.406186269Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T21:59:57.40626723Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T21:59:57.406287304Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T21:59:57.406297802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T21:59:57.40630654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:00:02.462433766Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:00:02.646513672Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:00:02.64664706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:00:02.746352507Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:00:02.746389882Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:00:02.746404369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:00:02.746416031Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:00:02.7464245Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:00:07.770644067Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:00:07.800779532Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:00:07.800875217Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:00:07.825437937Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:00:07.825482406Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:00:07.825523578Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:00:07.825534539Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:00:07.825543428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:00:12.842515215Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:00:12.872740122Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:00:12.872850501Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:00:12.892926828Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:00:12.892974966Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:00:12.89299016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:00:12.893001964Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:00:12.893011808Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:00:17.913155612Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:00:17.94279792Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:00:17.942910246Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:00:17.966033721Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:00:17.966111114Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:00:17.96615819Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:00:17.966182948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:00:17.966192326Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:00:22.982294482Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:00:23.014821447Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:00:23.014935763Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:00:23.041662499Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:00:23.041707028Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:00:23.041720362Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:00:23.041732239Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:00:23.041741756Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:00:28.05971351Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:00:28.088184358Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:00:28.088318525Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:00:28.108599018Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:00:28.108653408Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:00:28.108668563Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:00:28.108678305Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:00:28.108821637Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T22:00:28.108689076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:00:33.123550901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:00:33.153042909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:00:33.153151859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:00:33.178259771Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:00:33.178336551Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:00:33.178351148Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:00:33.178361741Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:00:33.178387748Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:00:38.196298102Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:00:38.225635746Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:00:38.225749298Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:00:38.2461196Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:00:38.246163167Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:00:38.246176701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:00:38.24622763Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:00:38.246248846Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:00:43.260194714Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:00:43.289308543Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:00:43.289400469Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:00:43.311336056Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:00:43.311380857Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:00:43.311395242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:00:43.311407074Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:00:43.311417248Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:00:48.327571958Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:00:48.354897757Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:00:48.354992587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:00:48.380610059Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:00:48.380661225Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:00:48.380676696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:00:48.38068779Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:00:48.38069651Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:00:53.395357774Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:00:53.424318798Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:00:53.424481051Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:00:53.448555712Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:00:53.448598921Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:00:53.448612622Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:00:53.448623737Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:00:53.448632011Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:00:58.464581483Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:00:58.495419175Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:00:58.495533258Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:00:58.515199155Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:00:58.515259807Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:00:58.515274001Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:00:58.515308959Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:00:58.515317545Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:01:03.532085702Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:01:03.569898301Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:01:03.570007103Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:01:03.590272391Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:01:03.590740282Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:01:03.590927114Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:01:03.591084153Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:01:03.591186338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:01:08.611174656Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:01:08.642058147Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:01:08.642159137Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:01:08.665046832Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:01:08.66510019Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:01:08.665115927Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:01:08.665127526Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:01:08.665135741Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:01:13.680013625Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:01:13.712957947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:01:13.713070756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:01:13.735367433Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:01:13.735411444Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:01:13.735424782Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:01:18.755507526Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:01:18.783588702Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:01:18.783706914Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:01:18.804542246Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:01:18.80458979Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:01:18.804605085Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:01:18.804616234Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:01:18.80462686Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:01:23.819576862Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:01:23.851360186Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:01:23.851471606Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:01:23.876692035Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:01:23.876739874Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:01:23.876754945Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:01:23.876766538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:01:23.876777184Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:01:28.89262003Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:01:28.922929377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:01:28.923073837Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:01:28.943180926Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:01:28.943218722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:01:28.943264401Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:01:28.943274731Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:01:28.943283387Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:01:33.962923309Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:01:33.992202357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:01:33.992343844Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:01:34.013792854Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:01:34.013848576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:01:34.013863366Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:01:34.013873279Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:01:34.013881393Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:01:39.031100214Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:01:39.062450689Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:01:39.062549942Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:01:39.083621144Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:01:39.083667431Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:01:39.083681541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:01:39.083691604Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:01:39.083702391Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:01:44.101289601Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:01:44.13186436Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:01:44.131967463Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:01:44.157184048Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:01:44.157253728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:01:44.157269978Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:01:44.157323656Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:01:44.157333788Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:01:49.175871634Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:01:49.205015502Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:01:49.205113711Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:01:49.227394354Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:01:49.227435572Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:01:49.227449199Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:01:49.227459411Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:01:49.227468567Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:01:54.243734518Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:01:54.271070226Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:01:54.271180459Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:01:54.292655214Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:01:54.29269789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:01:54.292712606Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:01:54.292723927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:01:54.292733691Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:01:59.307652232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:01:59.338357083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:01:59.338496448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:01:59.358631161Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:01:59.358673292Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:01:59.35868706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:01:59.358698146Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:01:59.358708219Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:02:04.376631518Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:02:04.407607936Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:02:04.407690681Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:02:04.427611734Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:02:04.427665998Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:02:04.427702957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:02:04.42771455Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:02:04.427738538Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:02:09.445265607Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:02:09.472048326Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:02:09.472172944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:02:09.491531842Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:02:09.491571677Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:02:09.491585529Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:02:09.491595832Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:02:09.491604147Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:02:14.507292099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:02:14.535465073Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:02:14.535562056Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:02:14.558729297Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:02:14.558772968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:02:14.558786077Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:02:14.558797289Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:02:14.558807389Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:02:19.578082298Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:02:19.609358563Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:02:19.60947729Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:02:19.633488598Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:02:19.63353985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:02:19.633556149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:02:19.6335691Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:02:19.633578536Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:02:24.652253198Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:02:24.680057702Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:02:24.680156681Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:02:24.701400386Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:02:24.701445465Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:02:24.701461943Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:02:24.701473138Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:02:24.701483158Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:02:29.721295678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:02:29.750014584Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:02:29.750103211Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:02:29.772171308Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:02:29.772216605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:02:29.772231721Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:02:29.772285935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:02:29.772295826Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:02:34.788313156Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:02:34.818027965Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:02:34.818115787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:02:34.837831146Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:02:34.837876054Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:02:34.837890242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:02:34.837900709Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:02:34.837911187Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:02:39.854309248Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:02:39.883737967Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:02:39.8838453Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:02:39.907522991Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:02:39.907566569Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:02:39.90760991Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:02:39.907620215Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:02:39.907628578Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:02:44.925278603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:02:44.955306722Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:02:44.955414122Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:02:44.979501724Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:02:44.979542161Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:02:44.979555078Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:02:44.979566246Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:02:44.979576447Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:02:50.000299503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:02:50.030881977Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:02:50.031019537Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:02:50.056213313Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:02:50.056270169Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:02:50.05628591Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:02:50.056296511Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:02:50.05630678Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:02:55.072802454Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:02:55.102431102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:02:55.102532071Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:02:55.123740794Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:02:55.123796123Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:02:55.123811106Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:02:55.123896921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:02:55.12390807Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:03:00.151806648Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:03:00.193097527Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:03:00.193217001Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:03:00.217426651Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:03:00.217475834Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:03:00.217491936Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:03:00.217502412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:03:00.217510343Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:03:05.235495631Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:03:05.267019351Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:03:05.267135288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:03:05.289575978Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:03:05.289618354Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:03:05.289633782Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:03:05.289645213Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:03:05.289655707Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:03:10.3102681Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:03:10.339383182Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:03:10.33949054Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:03:10.360303091Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:03:10.360349804Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:03:10.360363395Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:03:10.360375836Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:03:10.360385372Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:03:15.376125843Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:03:15.405115068Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:03:15.405204092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:03:15.425406482Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:03:15.425448402Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:03:15.425462289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:03:15.425472978Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:03:15.42548291Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:03:20.439808481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:03:20.471321213Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:03:20.471426883Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:03:20.496288387Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:03:20.496327504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:03:20.496340491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:03:20.496351741Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:03:20.496362382Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:03:25.513985976Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:03:25.544131166Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:03:25.544271474Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:03:25.565037846Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:03:25.56508379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:03:25.565099538Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:03:25.565110836Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:03:25.565120912Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:03:30.5822893Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:03:30.609764726Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:03:30.609873963Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:03:30.630321194Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:03:30.630362339Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:03:30.630376167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:03:30.63041314Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:03:30.630422825Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:03:35.646296308Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:03:35.675010268Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:03:35.675133888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:03:35.695832138Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:03:35.695872566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:03:35.695885779Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:03:35.695897473Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:03:35.695907097Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:03:40.713211257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:03:40.743919114Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:03:40.744028722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:03:40.764816278Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:03:40.764858563Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:03:40.764871516Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:03:40.764881832Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:03:40.764890223Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:03:45.782677699Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:03:45.812896016Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:03:45.81301769Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:03:45.832829175Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:03:45.832890723Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:03:45.832905491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:03:50.851699603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:03:50.881305043Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:03:50.881397247Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:03:50.900936717Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:03:50.900978346Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:03:50.900991758Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:03:50.901003208Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:03:50.90101241Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:03:55.921060173Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:03:55.94974825Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:03:55.94996842Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:03:55.972924106Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:03:55.972983097Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:03:55.972998435Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:03:55.973007865Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:03:55.973016772Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:04:00.989325056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:04:01.018053459Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:04:01.018186355Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:04:01.04172297Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:04:01.041766635Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:04:01.041782392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:04:01.041793234Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:04:01.041801768Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:04:06.059098998Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:04:06.086745649Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:04:06.087263551Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:04:06.111947765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:04:06.111992478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:04:06.112006107Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:04:06.112015546Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:04:06.112026618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:04:11.128996232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:04:11.158832484Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:04:11.158925464Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:04:11.180089159Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:04:11.180131144Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:04:11.180144484Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:04:11.180182209Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:04:11.180191967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:04:16.196266765Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:04:16.223440911Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:04:16.223560023Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:04:16.243646356Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:04:16.24369108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:04:16.243704868Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:04:16.24371607Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:04:16.24372507Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:04:21.261627012Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:04:21.290640412Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:04:21.29074956Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:04:21.313831672Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:04:21.314289509Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:04:21.314481375Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:04:21.314647328Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:04:21.314785893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:04:26.33172016Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:04:26.360879462Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:04:26.360988391Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:04:26.385836547Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:04:26.38588186Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:04:26.38590681Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:04:26.385917663Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:04:26.385926251Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:04:31.405288058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:04:31.435262239Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:04:31.435359086Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:04:31.457379654Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:04:31.457874205Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:04:31.458067302Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:04:31.458256894Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:04:31.458399575Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:04:36.476448006Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:04:36.505719678Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:04:36.505815578Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:04:36.529501309Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:04:36.529562782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:04:36.529578373Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:04:36.529587894Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:04:36.529596451Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:04:41.549233388Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:04:41.581751329Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:04:41.581866014Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:04:41.607160502Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:04:41.607200853Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:04:41.607261202Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:04:41.607272275Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:04:41.607281536Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:04:46.622900935Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:04:46.652328412Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:04:46.652424906Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:04:46.676818502Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:04:46.676879307Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:04:46.67689491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:04:46.676904415Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:04:46.676912837Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:04:51.692055551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:04:51.721797385Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:04:51.721913006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:04:51.744821652Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:04:51.744863056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:04:51.74487647Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:04:51.744900207Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:04:51.744909582Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:04:56.760094685Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:04:56.791699725Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:04:56.791807707Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:04:56.816563016Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:04:56.81660917Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:04:56.816624635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:04:56.816637581Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:04:56.816646807Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:05:01.848680453Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:05:01.96310457Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:05:01.963371851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:05:02.067693737Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:05:02.067745066Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:05:02.067759109Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:05:02.06776948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:05:02.067777943Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:05:07.096288056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:05:07.127191688Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:05:07.127364309Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:05:07.150548212Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:05:07.150594776Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:05:07.150610784Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:05:07.15062332Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:05:07.150633195Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:05:12.1672741Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:05:12.196930744Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:05:12.197048847Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:05:12.220781359Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:05:12.2208286Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:05:12.22084199Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:05:12.220853492Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:05:12.22086381Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:05:17.241812081Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:05:17.270368966Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:05:17.270461053Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:05:17.291485446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:05:17.291538056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:05:17.291552649Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:05:22.311930038Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:05:22.343327391Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:05:22.34341637Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:05:22.3673642Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:05:22.367408566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:05:22.367422299Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:05:22.367434312Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:05:22.36744339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:05:27.385284949Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:05:27.416205275Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:05:27.416320141Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:05:27.43982118Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:05:27.439877487Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:05:27.439893093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:05:27.439951532Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:05:27.439961066Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:05:32.461207175Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:05:32.489903848Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:05:32.490004809Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:05:32.513993791Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:05:32.514035641Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:05:32.514049686Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:05:32.514061808Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:05:32.514072004Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:05:37.529190427Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:05:37.560856361Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:05:37.560952964Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:05:37.58361591Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:05:37.583671287Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:05:37.583686404Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:05:37.583742222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:05:37.58375185Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:05:42.598226352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:05:42.626798357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:05:42.626910635Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:05:42.648938431Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:05:42.648985355Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:05:42.649002147Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:05:42.6490145Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:05:42.649025809Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:05:47.667859592Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:05:47.699019156Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:05:47.699137294Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:05:47.719525567Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:05:47.719566963Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:05:47.719580635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:05:47.71959215Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:05:47.719601362Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:05:52.735122755Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:05:52.764150755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:05:52.764258273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:05:52.785800317Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:05:52.785843981Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:05:52.785857757Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:05:52.785867433Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:05:52.785876144Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:05:57.801231503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:05:57.832275981Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:05:57.83253384Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:05:57.855101189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:05:57.855143279Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:05:57.855156783Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:05:57.855169273Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:05:57.855178109Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:06:02.88653678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:06:02.929320933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:06:02.929416783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:06:02.955124868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:06:02.955625927Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:06:02.955838776Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:06:02.955985946Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:06:02.956124251Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:06:07.975268714Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:06:08.003490101Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:06:08.003613653Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:06:08.028706258Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:06:08.028767653Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:06:08.028782314Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:06:08.028842851Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:06:08.02885327Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:06:13.043719987Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:06:13.071920824Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:06:13.072013983Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:06:13.10374961Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:06:13.103797399Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:06:13.103813375Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:06:13.103821991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:06:13.103828964Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:06:18.120894819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:06:18.150321893Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:06:18.15043371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:06:18.171149684Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:06:18.171195803Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:06:18.171209436Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:06:18.171218816Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:06:18.171228829Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:06:23.188157215Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:06:23.21686539Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:06:23.21698589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:06:23.24164542Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:06:23.241684842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:06:23.241698391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:06:23.241710433Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:06:28.25741555Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:06:28.288190858Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:06:28.28829831Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:06:28.3097203Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:06:28.310107308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:06:28.310130121Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:06:28.31014383Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:06:28.310155275Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:06:33.323222356Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:06:33.352976659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:06:33.353086057Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:06:33.377110268Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:06:33.377151111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:06:33.377165919Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:06:33.37717802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:06:33.377187779Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:06:38.395321457Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:06:38.424037592Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:06:38.424315765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:06:38.449273951Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:06:38.449313465Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:06:38.449328149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:06:38.449338238Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:06:38.449346397Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:06:43.464533172Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:06:43.495126953Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:06:43.495224515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:06:43.517743416Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:06:43.517788657Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:06:43.517802305Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:06:43.517814558Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:06:43.517824784Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:06:48.532399326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:06:48.56367081Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:06:48.563777095Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:06:48.588123281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:06:48.588169962Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:06:48.588185574Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:06:48.588219936Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:06:48.588229058Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:06:53.605310149Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:06:53.636099493Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:06:53.636209572Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:06:53.657122665Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:06:53.657169283Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:06:53.65718404Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:06:53.65719397Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:06:53.657201111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:06:58.675484112Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:06:58.70662809Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:06:58.706739415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:06:58.729366815Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:06:58.729410746Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:06:58.72942451Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:06:58.729435572Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:06:58.729445138Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:07:03.748653152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:07:03.777633192Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:07:03.777748627Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:07:03.805312325Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:07:03.805732786Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:07:03.805935801Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:07:03.806273763Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:07:03.806290521Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:07:08.826676727Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:07:08.856681851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:07:08.856779714Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:07:08.882799788Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:07:08.882862687Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:07:08.88287881Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:07:08.882917181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:07:08.88292695Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:07:13.898942664Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:07:13.927931767Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:07:13.928046307Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:07:13.952891974Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:07:13.952938396Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:07:13.952954051Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:07:13.952986944Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:07:13.952998855Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:07:18.969862496Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:07:18.998781454Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:07:18.998896255Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:07:19.025580384Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:07:24.040293337Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:07:24.070896599Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:07:24.070996182Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:07:24.092114049Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:07:24.092156144Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:07:24.092170087Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:07:24.092181715Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:07:24.092191467Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:07:29.106839488Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:07:29.138328237Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:07:29.138444938Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:07:29.159493813Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:07:29.159548976Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:07:29.159564424Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:07:29.159574688Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:07:29.159583128Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:07:34.17885724Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:07:34.209303816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:07:34.209415263Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:07:34.232116337Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:07:34.232159312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:07:34.232174052Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:07:34.232186592Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:07:34.232194829Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:07:39.247451608Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:07:39.278318776Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:07:39.278421065Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:07:39.3005776Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:07:39.30061869Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:07:39.300635379Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:07:39.300647535Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:07:39.300656633Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:07:44.317016809Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:07:44.349346816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:07:44.349466213Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:07:44.374104134Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:07:44.374163281Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:07:44.374178932Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:07:44.37418839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:07:44.374206385Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:07:49.389269182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:07:49.416931898Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:07:49.417027445Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:07:49.43679228Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:07:49.436912031Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:07:49.436930546Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:07:49.436941832Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:07:49.436951065Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:07:54.453281077Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:07:54.481206922Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:07:54.481318242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:07:54.504052564Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:07:54.504092482Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:07:54.504109046Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:07:54.50411899Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:07:54.504128033Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:07:59.519525624Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:07:59.547981709Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:07:59.548071067Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:07:59.574890588Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:07:59.574934134Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:07:59.574972618Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:07:59.575002353Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:07:59.575012359Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:08:04.593065505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:08:04.621146969Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:08:04.621269914Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:08:04.642534528Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:08:04.642575959Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:08:04.642591921Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:08:04.642602617Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:08:04.642611066Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:08:09.65594394Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:08:09.686328279Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:08:09.686446939Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:08:09.709580409Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:08:09.709623693Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:08:09.709637613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:08:09.709649316Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:08:09.709671122Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:08:14.728059444Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:08:14.766405196Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:08:14.766531287Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:08:14.793824192Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:08:14.793863512Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:08:14.793877313Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:08:14.793887178Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:08:14.793896299Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:08:19.814268938Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:08:19.843535373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:08:19.843631943Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:08:19.866914201Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:08:19.866962857Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:08:19.866978476Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:08:19.866990782Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:08:19.867011056Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:08:24.883161473Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:08:24.914413363Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:08:24.914517762Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:08:24.937261318Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:08:24.937306164Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:08:24.937319738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:08:24.937331141Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:08:24.937342689Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:08:29.955289158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:08:29.985696022Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:08:29.985792426Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:08:30.00936325Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:08:30.009405403Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:08:30.009419433Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:08:30.009432299Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:08:30.009441884Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:08:35.027295139Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:08:35.058075977Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:08:35.058196119Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:08:35.080871931Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:08:35.080915094Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:08:35.080929889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:08:35.080941067Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:08:35.080949821Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:08:40.09930445Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:08:40.128868233Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:08:40.129022485Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:08:40.153072303Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:08:40.153117448Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:08:40.153131334Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:08:45.169283571Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:08:45.199481324Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:08:45.199570304Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:08:45.226058933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:08:45.226449568Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:08:45.226471477Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:08:45.226484624Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:08:45.226495814Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:08:50.242980905Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:08:50.273178633Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:08:50.27331155Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:08:50.29418994Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:08:50.295391231Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:08:50.295429066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:08:50.295461822Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:08:50.295473659Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:08:55.311704691Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:08:55.339786904Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:08:55.339896004Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:08:55.368137166Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:08:55.368179605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:08:55.368208244Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:08:55.368217841Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:08:55.368226435Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:09:00.389120641Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:09:00.421038306Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:09:00.421158288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:09:00.443864675Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:09:00.443929133Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:09:00.443945958Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:09:00.443957344Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:09:00.443982595Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:09:05.460323889Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:09:05.49259376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:09:05.492679315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:09:05.516173857Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:09:05.516214945Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:09:05.516228322Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:09:05.516250854Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:09:05.516259788Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:09:10.533464814Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:09:10.560798705Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:09:10.560918922Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:09:10.58244608Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:09:10.5824882Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:09:10.582502236Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:09:10.582515328Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:09:10.582525271Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:09:15.600562566Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:09:15.628789144Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:09:15.628911749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:09:15.651719694Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:09:15.651761623Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:09:15.651775393Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:09:15.651786718Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:09:15.651796669Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:09:20.673313753Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:09:20.702519209Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:09:20.70263128Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:09:20.725708869Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:09:20.725749212Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:09:20.725763944Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:09:20.725793498Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:09:20.725802994Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:09:25.744266112Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:09:25.774224825Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:09:25.774335931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:09:25.797212553Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:09:25.79728015Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:09:25.797296208Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:09:25.797355982Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:09:25.797366872Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:09:30.818005618Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:09:30.845932952Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:09:30.846045254Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:09:30.866301547Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:09:30.866342192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:09:30.866356776Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:09:30.866400042Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:09:30.866409282Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:09:35.881458865Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:09:35.912276621Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:09:35.912385981Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:09:35.937323926Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:09:35.937372352Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:09:35.937386793Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:09:35.937396695Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:09:35.937406355Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:09:40.958294245Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:09:40.987045558Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:09:40.987154726Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:09:41.009304072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:09:41.009348003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:09:41.009363161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:09:41.009384384Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:09:41.009393261Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:09:46.028568029Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:09:46.058040623Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:09:46.058137644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:09:46.082348423Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:09:46.08239192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:09:46.082430023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:09:46.082440654Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:09:46.082450408Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:09:51.103902241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:09:51.13542631Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:09:51.13552177Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:09:51.15763102Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:09:51.157686336Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:09:51.157702052Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:09:51.157713813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:09:51.157723863Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:09:56.177534431Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:09:56.210107934Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:09:56.210225853Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:09:56.233298314Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:09:56.233339011Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:09:56.233352602Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:09:56.233364254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:09:56.233373868Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:10:01.256589539Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:10:01.365683185Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:10:01.365952092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:10:01.400009721Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:10:01.40005453Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:10:01.400068887Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:10:01.400080173Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:10:01.40008954Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:10:06.41997373Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:10:06.45115271Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:10:06.45127719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:10:06.472115991Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:10:06.47215724Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:10:06.472170872Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:10:06.472182258Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:10:06.472192582Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:10:11.488802623Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:10:11.518730911Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:10:11.518851469Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:10:11.541384405Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:10:11.541423878Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:10:11.54143773Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:10:11.541449127Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:10:11.541458777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:10:16.559337831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:10:16.590498471Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:10:16.590634215Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:10:16.611932113Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:10:16.611975621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:10:16.611989959Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:10:16.611999792Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:10:16.612008441Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:10:21.630358439Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:10:21.658738511Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:10:21.658831703Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:10:21.681805675Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:10:21.68184863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:10:21.681862126Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:10:21.68187351Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:10:21.681883143Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:10:26.702993716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:10:26.731124371Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:10:26.731228475Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:10:26.757021203Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:10:26.757064317Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:10:26.757079677Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:10:26.757091375Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:10:26.757100871Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:10:31.773286787Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:10:31.802327715Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:10:31.802420945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:10:31.826683848Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:10:31.826724016Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:10:31.826757086Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:10:31.826795361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:10:31.826804057Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:10:36.843284033Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:10:36.872968225Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:10:36.87308352Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:10:36.895936602Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:10:36.895977683Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:10:36.895993386Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:10:36.896004399Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:10:36.896014203Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:10:41.91828179Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:10:41.947432984Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:10:41.947532101Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:10:41.971231581Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:10:41.971288827Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:10:41.971319662Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:10:41.971329861Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:10:41.971338142Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:10:46.989440176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:10:47.01905664Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:10:47.019153805Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:10:47.043431745Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:10:47.043476025Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:10:47.043490477Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:10:47.043501525Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:10:47.043510042Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:10:52.063834503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:10:52.09370544Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:10:52.093797396Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:10:52.117960302Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:10:52.118003521Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:10:52.118035982Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:10:52.118047349Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:10:52.118055742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:10:57.133284822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:10:57.162757012Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:10:57.162860181Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:10:57.186088215Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:10:57.186150666Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:10:57.186167095Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:10:57.186176294Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:10:57.186184788Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:11:02.21912567Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:11:02.269731924Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:11:02.269854879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:11:02.292221435Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:11:02.292279355Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:11:02.292294868Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:11:02.292336043Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:11:02.292345306Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:11:07.312268808Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:11:07.341330904Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:11:07.341453787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:11:07.363892448Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:11:07.363965461Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:11:07.363980838Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:11:07.363990356Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:11:07.36399886Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:11:12.384007758Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:11:12.412673347Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:11:12.412793336Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:11:12.43290939Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:11:12.432967418Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:11:12.43298208Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:11:12.43299202Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:11:12.433001115Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:11:17.450848602Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:11:17.480558516Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:11:17.480674808Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:11:17.503057269Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:11:17.503098982Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:11:17.503112093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:11:17.503125698Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:11:17.50313589Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:11:22.521712857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:11:22.550651041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:11:22.55076323Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:11:22.57037656Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:11:22.570430702Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:11:22.570446229Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:11:22.570457681Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:11:22.570465842Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:11:27.588001867Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:11:27.617514307Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:11:27.617646989Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:11:27.641317169Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:11:27.641386079Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:11:27.641403025Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:11:27.641415211Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:11:27.641426814Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:11:32.661291551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:11:32.69078371Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:11:32.690900768Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:11:32.711283734Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:11:32.711692606Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:11:32.711828126Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:11:32.7119252Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:11:32.712014568Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:11:37.729416131Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:11:37.759463348Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:11:37.75956203Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:11:37.78236589Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:11:37.782419846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:11:37.782436084Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:11:37.782446955Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:11:37.782455775Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:11:42.799881434Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:11:42.828554753Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:11:42.828655411Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:11:42.852979707Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:11:42.853023192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:11:42.853037161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:11:42.853049938Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:11:42.853059253Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:11:47.869531195Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:11:47.899956655Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:11:47.900075211Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:11:47.92389233Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:11:47.92393293Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:11:47.923946946Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:11:47.923957988Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:11:47.923966188Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:11:52.944420522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:11:52.974585392Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:11:52.974701298Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:11:52.995341581Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:11:52.995397714Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:11:52.99541309Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:11:52.995424425Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:11:52.995432927Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:11:58.014206971Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:11:58.046309188Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:11:58.046425845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:11:58.070611058Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:11:58.070660366Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:11:58.070675524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:11:58.070686397Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:11:58.070695011Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:12:03.089915083Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:12:03.118147508Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:12:03.118253319Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:12:03.143398156Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:12:03.143443549Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:12:03.143458717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:12:03.143476576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:12:03.14348498Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:12:08.157434088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:12:08.187529164Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:12:08.187618201Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:12:08.215156125Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:12:08.215198727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:12:08.215212767Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:12:08.215223934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:12:08.215253017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:12:13.23327746Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:12:13.263797302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:12:13.263906073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:12:13.285186839Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:12:13.28525433Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:12:13.285269903Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:12:13.285280006Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:12:13.285288529Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:12:18.303929464Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:12:18.333634735Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:12:18.333769919Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:12:18.35740383Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:12:18.357444503Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:12:18.357459257Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:12:18.357470726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:12:18.357480642Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:12:23.374390699Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:12:23.406007173Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:12:23.40613074Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:12:23.427682433Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:12:23.42773016Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:12:23.427764012Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:12:23.427775533Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:12:23.427784343Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:12:28.44294607Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:12:28.47214401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:12:28.472265801Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:12:28.494041426Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:12:28.494086654Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:12:28.494103395Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:12:28.494140537Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:12:28.494151345Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:12:33.512527133Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:12:33.540747518Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:12:33.540866115Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:12:33.564820924Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:12:33.564865083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:12:33.564878934Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:12:33.564890158Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:12:33.564899659Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:12:38.582906213Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:12:38.612835157Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:12:38.61296145Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:12:38.634827633Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:12:38.634873087Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:12:38.634887747Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:12:38.634897262Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:12:38.634904112Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:12:43.649327026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:12:43.678651364Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:12:43.678774223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:12:43.701598332Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:12:43.701638269Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:12:43.701651306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:12:43.70166246Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:12:43.70167354Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:12:48.721327172Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:12:48.752181152Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:12:48.752411616Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:12:48.779952825Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:12:48.779992712Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:12:48.780006875Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:12:48.780018439Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:12:48.780029373Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:12:53.799360036Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:12:53.827186169Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:12:53.827322439Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:12:53.849554048Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:12:53.849595603Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:12:53.849609502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:12:53.849633248Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:12:53.849641937Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:12:58.868750149Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:12:58.898056062Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:12:58.898190205Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:12:58.921497346Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:12:58.921545026Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:12:58.921560431Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:12:58.921569909Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:12:58.921580186Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:13:03.938475023Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:13:03.968417243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:13:03.968651755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:13:03.988140315Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:13:03.988183285Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:13:03.988196662Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:13:03.988208625Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:13:03.988218822Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:13:09.003863073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:13:09.033682793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:13:09.033799733Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:13:09.057160578Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:13:09.057204135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:13:09.057219961Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:13:09.057231055Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:13:09.057251642Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:13:14.076660249Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:13:14.105497951Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:13:14.105621242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:13:14.128058501Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:13:14.128099185Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:13:14.128112193Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:13:14.128123677Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:13:14.12813309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:13:19.14602662Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:13:19.176902554Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:13:19.177019197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:13:19.199974138Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:13:19.20001971Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:13:19.200035983Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:13:19.200045785Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:13:19.200052826Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:13:24.215732023Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:13:24.245791057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:13:24.245920671Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:13:24.267776991Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:13:24.26781863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:13:24.267833693Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:13:24.267844873Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:13:24.267853869Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:13:29.283604314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:13:29.311810901Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:13:29.312320507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:13:29.33306522Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:13:29.333293943Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:13:29.333314687Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:13:29.333335482Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:13:29.333344795Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:13:34.34966545Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:13:34.378925427Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:13:34.379031212Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:13:34.405967711Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:13:34.406024309Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:13:34.406039053Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:13:34.406061664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:13:34.406070301Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:13:39.422457358Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:13:39.452293674Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:13:39.452386533Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:13:39.474090372Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:13:39.474139429Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:13:39.474155753Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:13:39.474164913Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:13:39.474172392Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:13:44.493565087Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:13:44.524271215Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:13:44.524399409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:13:44.548690717Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:13:44.548732907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:13:44.548746496Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:13:44.548756152Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:13:44.54876617Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:13:49.57047072Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:13:49.599655284Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:13:49.599755127Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:13:49.620702991Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:13:49.620746934Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:13:49.620760247Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:13:54.637778697Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:13:54.664790096Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:13:54.664892375Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:13:54.686893719Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:13:54.686933236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:13:54.686946842Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:13:54.686957681Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:13:54.686968292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:13:59.704112226Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:13:59.729773504Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:13:59.729866033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:13:59.749837219Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:13:59.74988049Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:13:59.749894837Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:13:59.749906771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:13:59.749915212Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:14:04.76629567Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:14:04.797501798Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:14:04.797618444Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:14:04.818269775Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:14:04.818311971Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:14:04.818325473Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:14:04.818337317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:14:04.818346761Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:14:09.836075674Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:14:09.866417048Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:14:09.866509921Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:14:09.88761916Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:14:09.88767507Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:14:09.887690906Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:14:09.887700629Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:14:09.887709358Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:14:14.90529692Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:14:14.934338182Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:14:14.934441759Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:14:14.959098273Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:14:14.959141871Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:14:14.95915535Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:14:14.959167405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:14:14.959176814Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:14:19.984289547Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:14:20.012320545Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:14:20.012556097Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:14:20.037019708Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:14:20.03706182Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:14:20.037076402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:14:20.037088365Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:14:20.037098316Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:14:25.054850177Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:14:25.085092441Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:14:25.08521647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:14:25.10581572Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:14:25.105857521Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:14:25.105871746Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:14:25.105882817Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:14:25.105892461Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:14:30.126310358Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:14:30.155064396Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:14:30.15517962Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:14:30.179520883Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:14:30.179575275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:14:30.17959102Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:14:30.179651409Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:14:30.179661537Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:14:35.194217213Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:14:35.2234765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:14:35.223590175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:14:35.247600398Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:14:35.247646349Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:14:35.247660643Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:14:35.247673223Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:14:35.247682438Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:14:40.265279399Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:14:40.297008989Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:14:40.297126598Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:14:40.317097438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:14:40.317153653Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:14:40.317167859Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:14:40.317178066Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:14:40.317186661Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:14:45.335850384Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:14:45.363893629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:14:45.364001917Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:14:45.386712162Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:14:45.386753352Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:14:45.386768154Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:14:50.407865414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:14:50.438017619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:14:50.438133638Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:14:50.458373288Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:14:50.458422234Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:14:50.458436342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:14:50.458446858Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:14:50.458457222Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:14:55.476463421Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:14:55.507874809Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:14:55.507970242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:14:55.532739321Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:14:55.532784123Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:14:55.532799121Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:14:55.532811833Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:14:55.532820962Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:15:00.550402932Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:15:00.583861878Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:15:00.58397101Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:15:00.60794206Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:15:00.60798848Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:15:00.60800167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:15:00.608013323Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:15:00.608023709Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:15:05.627280664Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:15:05.655215428Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:15:05.655318004Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:15:05.675687121Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:15:05.675747935Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:15:05.675764568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:15:05.675795874Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:15:05.675804686Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:15:10.695468052Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:15:10.726016319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:15:10.726122523Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:15:10.750948891Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:15:10.750994428Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:15:10.751008902Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:15:10.751020092Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:15:10.751029784Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:15:15.766947233Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:15:15.795987897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:15:15.796096338Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:15:15.817846439Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:15:15.817889997Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:15:15.817904027Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:15:15.817917107Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:15:15.817926461Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:15:20.837423286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:15:20.866672547Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:15:20.866784424Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:15:20.89402116Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:15:20.894062522Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:15:20.894076094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:15:20.894086526Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:15:20.894097196Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:15:25.912302231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:15:25.940343333Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:15:25.940596418Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:15:25.964974881Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:15:25.965031112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:15:25.96504597Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:15:25.96505588Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:15:25.965064843Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:15:30.987624716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:15:31.019726517Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:15:31.019835967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:15:31.047027358Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:15:31.047476504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:15:31.047501889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:15:31.04751442Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:15:31.047526242Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:15:36.065116826Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:15:36.092800409Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:15:36.092907655Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:15:36.1154551Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:15:36.115495588Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:15:36.115509103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:15:36.115519744Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:15:36.115529466Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:15:41.138271301Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:15:41.166977157Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:15:41.167104325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:15:41.190655716Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:15:41.190699206Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:15:41.19071433Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:15:41.19083678Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:15:41.19087015Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:15:46.208548542Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:15:46.23819028Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:15:46.238319471Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:15:46.263912039Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:15:46.263957045Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:15:51.285256562Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:15:51.314687906Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:15:51.31477867Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:15:51.33849726Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:15:51.338539602Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:15:51.338553834Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:15:51.338564118Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:15:51.338573046Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:15:56.357549204Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:15:56.386915943Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:15:56.387051351Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:15:56.411565779Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:15:56.41161083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:15:56.411626722Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:15:56.411637996Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:15:56.411647271Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:16:01.433742143Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:16:01.462119903Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:16:01.462213654Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:16:01.486829701Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:16:01.486871208Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:16:01.486922254Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:16:01.486933171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:16:01.486942667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:16:06.504266737Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:16:06.532945098Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:16:06.533072878Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:16:06.559041674Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:16:06.559089126Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:16:06.559104083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:16:06.559114746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:16:06.559124375Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:16:11.578289316Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:16:11.607961412Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:16:11.608073496Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:16:11.634003475Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:16:11.634045782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:16:11.634060302Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:16:11.634070164Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:16:11.634078324Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:16:16.654293759Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:16:16.684220208Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:16:16.684320893Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:16:16.708900644Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:16:16.70896024Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:16:16.70897462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:16:16.708984974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:16:16.708993968Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:16:21.730614491Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:16:21.75962329Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:16:21.759717881Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:16:21.786189578Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:16:21.786603695Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:16:21.786626816Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:16:21.786639316Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:16:21.786650541Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:16:26.805007357Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:16:26.833965725Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:16:26.834068648Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:16:26.857742251Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:16:26.857786698Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:16:26.857801302Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:16:26.857826348Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:16:26.857836108Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:16:31.874350173Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:16:31.903470841Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:16:31.903569278Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:16:31.927861432Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:16:31.927906185Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:16:31.927950527Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:16:31.927961263Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:16:31.927969922Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:16:36.943595912Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:16:36.97315628Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:16:36.973289489Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:16:36.995375883Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:16:36.995416952Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:16:36.995430815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:16:36.995440949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:16:36.995450181Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:16:42.015276842Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:16:42.044072438Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:16:42.044189571Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:16:42.069269216Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:16:42.069310693Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:16:42.069326608Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:16:42.069338736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:16:42.069350003Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:16:47.089267647Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:16:47.119313814Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:16:47.119406226Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:16:47.142690966Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:16:47.142734616Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:16:47.142749386Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:16:47.142760571Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:16:47.142769983Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:16:52.163529613Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:16:52.195392993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:16:52.195488452Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:16:52.218446663Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:16:52.218500179Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:16:52.218515224Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:16:52.218573878Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:16:52.218584121Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:16:57.234205614Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:16:57.263813215Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:16:57.263901593Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:16:57.284209051Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:16:57.284264368Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:16:57.284279807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:16:57.284289501Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:16:57.28429829Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:17:02.304590765Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:17:02.332698401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:17:02.332793466Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:17:02.35547681Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:17:02.355522817Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:17:02.355538459Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:17:02.355549811Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:17:02.355559751Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:17:07.372839446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:17:07.400138446Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:17:07.400229069Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:17:07.425691902Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:17:07.425735055Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:17:07.425748165Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:17:07.42575969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:17:07.425769241Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:17:12.441463644Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:17:12.471479908Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:17:12.471593494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:17:12.494221713Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:17:12.494281456Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:17:12.494298016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:17:12.494309656Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:17:12.494318334Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:17:17.512561302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:17:17.541839109Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:17:17.541954737Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:17:17.566459931Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:17:17.56650007Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:17:17.566515563Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:17:17.566526572Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:17:17.566536326Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:17:22.58960645Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:17:22.617849164Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:17:22.617941029Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:17:22.63782337Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:17:22.637865396Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:17:22.637879168Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:17:22.637889964Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:17:22.637898533Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:17:27.656287343Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:17:27.68477954Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:17:27.684885163Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:17:27.706068415Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:17:27.706112481Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:17:27.706125401Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:17:27.706136174Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:17:27.70614624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:17:32.726737859Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:17:32.755796434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:17:32.755885453Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:17:32.780369678Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:17:32.78041373Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:17:32.780444378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:17:32.780603902Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:17:32.78073692Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T22:17:32.781031884Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T22:17:32.78112959Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:17:37.797301225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:17:37.825714826Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:17:37.825837763Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:17:37.850021995Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:17:37.850065857Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:17:37.8500801Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:17:37.850091325Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:17:37.850101222Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:17:42.868557542Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:17:42.898843958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:17:42.898959326Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:17:42.923172057Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:17:42.92321411Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:17:42.923227557Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:17:42.923295576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:17:42.923306617Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:17:47.937118131Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:17:47.966697064Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:17:47.966787205Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:17:47.98982986Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:17:47.989869462Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:17:47.989882611Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:17:47.989893489Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:17:47.989903091Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:17:53.010628351Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:17:53.04080861Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:17:53.040928147Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:17:53.064777978Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:17:53.064819141Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:17:53.064834277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:17:53.064864489Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:17:53.064874209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:17:58.079428928Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:17:58.106141394Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:17:58.106281854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:17:58.12892751Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:17:58.12896733Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:17:58.12898268Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:17:58.128993821Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:18:03.140283468Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:18:03.168271356Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:18:03.168364984Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:18:03.190889509Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:18:03.190935312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:18:03.19094966Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:18:03.190961728Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:18:03.190971915Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:18:08.212101292Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:18:08.242943726Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:18:08.243035621Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:18:08.266927321Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:18:08.266968308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:18:08.266984996Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:18:08.266995457Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:18:08.267005384Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:18:13.281782575Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:18:13.312839994Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:18:13.312972479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:18:13.33505176Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:18:13.335093703Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:18:13.335108619Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:18:13.335119894Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:18:13.335129249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:18:18.350580143Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:18:18.377611304Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:18:18.377744507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:18:18.402167665Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:18:18.402206889Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:18:18.402270804Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:18:18.402283557Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:18:18.402302601Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:18:23.416377071Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:18:23.446466043Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:18:23.446558415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:18:23.469588901Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:18:23.46963225Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:18:23.469646735Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:18:23.469658107Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:18:23.469667314Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:18:28.486629328Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:18:28.516837678Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:18:28.516931504Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:18:28.539928823Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:18:28.539972298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:18:33.556770584Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:18:33.587849408Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:18:33.587945202Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:18:33.61402503Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:18:33.614068958Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:18:33.614083017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:18:33.614093352Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:18:33.614103926Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:18:38.631284252Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:18:38.659791731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:18:38.659893897Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:18:38.685445963Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:18:38.68550356Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:18:38.685518977Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:18:38.685528926Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:18:38.685548114Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:18:43.703626273Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:18:43.734579141Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:18:43.734691446Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:18:43.758381231Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:18:43.758425801Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:18:43.758439843Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:18:43.758450517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:18:43.758460782Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:18:48.775147136Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:18:48.805600007Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:18:48.805705127Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:18:48.829649868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:18:48.829693367Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:18:48.829720099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:18:48.829731233Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:18:48.82974109Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:18:53.841514939Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:18:53.872725789Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:18:53.872809432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:18:53.897725722Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:18:53.897766198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:18:53.897779326Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:18:53.897812753Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:18:53.897821938Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:18:58.914452222Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:18:58.944858781Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:18:58.944949161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:18:58.964341098Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:18:58.964398484Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:19:03.982491586Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:19:04.014366788Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:19:04.014460752Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:19:04.037698727Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:19:04.037741739Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:19:04.03775634Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:19:04.037768223Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:19:04.037777988Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:19:09.054296053Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:19:09.083793654Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:19:09.083885144Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:19:09.104925721Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:19:09.104975444Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:19:09.104990524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:19:09.105025462Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:19:09.105034659Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:19:14.121040518Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:19:14.14894025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:19:14.149046032Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:19:14.173586315Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:19:14.173630727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:19:14.173644818Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:19:14.173677703Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:19:14.173699875Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:19:19.191699339Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:19:19.221103577Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:19:19.221202448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:19:19.242544398Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:19:19.242586624Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:19:19.242600544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:19:19.242610842Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:19:19.242620934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:19:24.259287866Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:19:24.288785956Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:19:24.288892498Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:19:24.309596455Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:19:24.30965642Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:19:24.309672887Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:19:24.309696499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:19:24.309705269Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:19:29.329165237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:19:29.360806893Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:19:29.360927996Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:19:29.383352189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:19:29.383392358Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:19:29.383405797Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:19:29.383417633Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:19:34.400753859Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:19:34.429024352Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:19:34.429136649Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:19:34.449855317Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:19:34.449896996Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:19:34.449911709Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:19:34.449944541Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:19:34.449953501Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:19:39.467932657Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:19:39.495576047Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:19:39.495698463Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:19:39.516258465Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:19:39.516322664Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:19:39.516337028Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:19:39.516346542Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:19:39.516354631Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:19:44.532663288Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:19:44.561516298Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:19:44.561654031Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:19:44.585920443Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:19:44.585964122Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:19:44.585978899Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:19:44.586080665Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:19:44.586090952Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:19:49.604804249Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:19:49.635061442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:19:49.635186064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:19:49.665581595Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:19:49.665630474Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:19:49.665644725Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:19:49.665674578Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:19:49.665684481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:19:54.684266056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:19:54.711345256Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:19:54.711444311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:19:54.731327947Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:19:54.731368171Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:19:54.731382925Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:19:54.731392969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:19:54.731401857Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:19:59.750570056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:19:59.781598495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:19:59.781714718Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:19:59.807986144Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:19:59.808032658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:19:59.808048898Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:19:59.808060435Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:19:59.808071139Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:20:04.825395023Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:20:04.85485445Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:20:04.854966954Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:20:04.876199203Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:20:04.87625084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:20:04.876266067Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:20:09.896019586Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:20:09.925147229Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:20:09.925286693Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:20:09.948805375Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:20:09.948851546Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:20:09.948867162Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:20:09.948879864Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:20:09.948890559Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:20:14.966701583Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:20:14.999184979Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:20:14.999292183Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:20:15.023780595Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:20:15.02382845Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:20:15.023842685Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:20:15.023855173Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:20:15.023865551Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:20:20.044298488Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:20:20.073804808Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:20:20.073896834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:20:20.095333237Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:20:20.095373971Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:20:20.095388266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:20:20.095400339Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:20:20.095409888Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:20:25.114462309Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:20:25.143421921Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:20:25.143532336Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:20:25.164059905Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:20:25.164114204Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:20:25.164128326Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:20:25.164139951Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:20:25.164148222Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:20:30.183447534Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:20:30.213384984Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:20:30.213512161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:20:30.233058815Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:20:30.23309851Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:20:30.233113763Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:20:30.233124605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:20:30.233133986Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:20:35.25104101Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:20:35.280531835Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:20:35.280648707Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:20:35.301280546Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:20:35.301320634Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:20:35.301334127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:20:35.301344631Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:20:35.301353475Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:20:40.319277718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:20:40.348155377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:20:40.348296736Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:20:40.369614746Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:20:40.36965866Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:20:40.369672713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:20:40.369683567Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:20:40.369692723Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:20:45.387597057Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:20:45.418123178Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:20:45.418218259Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:20:45.442026186Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:20:45.442068997Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:20:45.44208413Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:20:45.442113851Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:20:45.442124188Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:20:50.459474556Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:20:50.490598694Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:20:50.490688448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:20:50.515659186Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:20:50.515701335Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:20:50.515714706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:20:50.51574802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:20:50.515757742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:20:55.533230536Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:20:55.560574638Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:20:55.560676224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:20:55.58209789Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:20:55.582139085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:20:55.582153492Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:20:55.582164733Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:20:55.582173388Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:21:00.602280179Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:21:00.629361857Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:21:00.629474979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:21:00.650407273Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:21:00.650450778Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:21:00.650466014Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:21:00.650476834Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:21:00.650485812Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:21:05.669278663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:21:05.698487416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:21:05.698598589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:21:05.720030965Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:21:05.720073576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:21:05.720088306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:21:05.72009843Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:21:05.720107607Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:21:10.740830538Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:21:10.767182398Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:21:10.767303534Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:21:10.787368111Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:21:10.787407617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:21:10.787420744Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:21:10.787432422Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:21:10.787442406Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:21:15.803684822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:21:15.833398686Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:21:15.833492288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:21:15.855284188Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:21:15.8553371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:21:15.855353044Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:21:15.855385429Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:21:15.855397505Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:21:20.870654787Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:21:20.90025059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:21:20.900334204Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:21:20.920072957Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:21:20.920527954Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:21:20.920551419Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:21:20.920574916Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:21:20.920586505Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:21:25.935775953Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:21:25.965829272Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:21:25.965945829Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:21:25.986124557Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:21:25.986190192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:21:25.986205632Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:21:25.986216127Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:21:25.98622428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:21:31.003995827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:21:31.034251836Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:21:31.034347159Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:21:31.057294137Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:21:31.057335152Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:21:31.057350607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:21:31.057381484Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:21:31.057392116Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:21:36.069988085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:21:36.101806916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:21:36.101973682Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:21:36.125484206Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:21:36.12552713Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:21:36.125541778Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:21:36.125554061Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:21:36.125563805Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:21:41.145264136Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:21:41.174709363Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:21:41.174826707Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:21:41.195509001Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:21:41.195548334Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:21:41.195585499Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:21:41.195596845Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:21:41.195605238Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:21:46.210477305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:21:46.24304269Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:21:46.243133589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:21:46.263643834Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:21:46.263705087Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:21:46.26372162Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:21:46.263731948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:21:46.263740264Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:21:51.279248976Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:21:51.31258188Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:21:51.312715972Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:21:51.337869911Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:21:51.337910924Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:21:51.33792501Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:21:51.337935471Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:21:51.337945644Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:21:56.356751653Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:21:56.387113792Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:21:56.38722512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:21:56.409334228Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:21:56.409376084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:21:56.409389349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:21:56.409400821Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:21:56.409410364Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:22:01.435861912Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:22:01.47422401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:22:01.474799985Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:22:01.509831715Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:22:01.509879427Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:22:01.509894556Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:22:01.509905149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:22:01.509914096Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:22:06.526823939Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:22:06.556997704Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:22:06.557094918Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:22:06.578350917Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:22:06.578391978Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:22:06.578408094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:22:06.578418831Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:22:06.578428241Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:22:11.597569249Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:22:11.627573783Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:22:11.627667979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:22:11.650578724Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:22:11.650619822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:22:11.650674871Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:22:11.65068462Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:22:11.650692963Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:22:16.667747773Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:22:16.698631176Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:22:16.698739226Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:22:16.719848466Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:22:16.719906261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:22:16.719920153Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:22:16.719930678Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:22:16.719939619Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:22:21.743269175Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:22:21.772067268Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:22:21.772157634Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:22:21.791927011Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:22:21.791972793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:22:21.791986976Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:22:21.791997664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:22:21.792006929Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:22:26.810702916Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:22:26.841032259Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:22:26.841147338Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:22:26.864694914Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:22:26.86474268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:22:26.864758284Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:22:26.864770994Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:22:26.864781305Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:22:31.879404772Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:22:31.910899957Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:22:31.911012248Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:22:31.932853474Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:22:31.93289789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:22:31.932912123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:22:31.932923503Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:22:31.932933428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:22:36.950037588Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:22:36.978590565Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:22:36.978744784Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:22:36.998686891Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:22:36.998732235Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:22:36.998747323Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:22:36.998757698Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:22:36.998767713Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:22:42.015309543Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:22:42.04630963Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:22:42.046414057Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:22:42.06881552Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:22:42.068858814Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:22:42.068872564Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:22:42.06888391Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:22:42.068895371Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:22:47.089268528Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:22:47.116093556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:22:47.116199208Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:22:47.135875647Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:22:47.135916543Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:22:47.135929826Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:22:47.135940644Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:22:47.135950732Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:22:52.151680341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:22:52.181816362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:22:52.181930692Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:22:52.203034535Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:22:52.203075773Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:22:52.203090529Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:22:52.20310309Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:22:52.203112965Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:22:57.219279917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:22:57.248858157Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:22:57.24897522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:22:57.269461728Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:22:57.269511786Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:22:57.269527626Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:22:57.269538828Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:22:57.269550169Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:23:02.290270598Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:23:02.319584748Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:23:02.319694064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:23:02.344736943Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:23:02.344798534Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:23:02.344813047Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:23:02.34482444Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:23:02.34483446Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:23:07.360189565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:23:07.391049875Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:23:07.391135372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:23:07.410424222Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:23:07.410469639Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:23:07.410483313Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:23:07.41049545Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:23:07.410505079Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:23:12.430045093Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:23:12.459156102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:23:12.459266868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:23:12.483108513Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:23:12.483156562Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:23:12.483172312Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:23:12.483182823Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:23:12.483190643Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:23:17.498386568Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:23:17.529058355Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:23:17.529182546Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:23:17.549164637Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:23:17.549205101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:23:17.549219507Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:23:17.549230401Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:23:17.549250204Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:23:22.567189939Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:23:22.599376571Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:23:22.599843519Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:23:22.62102382Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:23:22.621066399Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:23:22.62108002Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:23:27.637096843Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:23:27.672979657Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:23:27.673085569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:23:27.697491317Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:23:27.697535335Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:23:27.697549655Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:23:27.697562538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:23:27.697572786Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:23:32.714060577Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:23:32.743548052Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:23:32.743657734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:23:32.764001024Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:23:32.764041914Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:23:32.764093139Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:23:32.764103606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:23:32.764112626Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:23:37.783280848Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:23:37.815386115Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:23:37.815524517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:23:37.838347142Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:23:37.838402689Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:23:37.838419035Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:23:37.83847355Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:23:37.838484044Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:23:42.854410741Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:23:42.881411197Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:23:42.881503644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:23:42.901333838Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:23:42.901374941Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:23:42.901389351Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:23:42.90140056Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:23:42.901408809Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:23:47.923351857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:23:47.950808938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:23:47.950897248Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:23:47.971645371Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:23:47.971686108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:23:47.971700603Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:23:47.971740079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:23:47.97174936Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:23:52.988286208Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:23:53.016104759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:23:53.016214222Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:23:53.039654172Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:23:53.039699177Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:23:53.039714134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:23:53.039726083Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:23:53.039735559Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:23:58.055195251Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:23:58.084655864Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:23:58.084758947Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:23:58.10719726Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:23:58.107266075Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:23:58.107281443Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:23:58.107291181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:23:58.107299776Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:24:03.121406406Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:24:03.152355304Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:24:03.152579159Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:24:03.187440465Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:24:03.187490822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:24:03.18750668Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:24:03.187518278Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:24:03.187528267Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:24:08.205295522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:24:08.233913262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:24:08.234021474Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:24:08.256174638Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:24:08.256213244Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:24:08.256227156Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:24:08.256249473Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:24:08.256259234Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:24:13.272656285Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:24:13.30983996Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:24:13.309969622Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:24:13.3349209Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:24:13.334963121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:24:13.334976533Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:24:18.355271034Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:24:18.383976859Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:24:18.384086611Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:24:18.405750468Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:24:18.405792604Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:24:18.405807004Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:24:18.405819322Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:24:18.405828807Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:24:23.424222703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:24:23.452256152Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:24:23.452351223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:24:23.47880409Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:24:23.478851278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:24:23.478866995Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:24:23.478876777Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:24:23.478885821Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:24:28.495555323Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:24:28.525364978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:24:28.525455889Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:24:28.546909359Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:24:28.546952425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:24:28.546965518Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:24:28.546976899Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:24:28.546985989Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:24:33.562312038Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:24:33.594300262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:24:33.594417321Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:24:33.619077485Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:24:33.619117691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:24:33.619131459Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:24:33.619143884Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:24:33.619152892Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:24:38.636038543Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:24:38.664554366Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:24:38.664667336Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:24:38.686599919Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:24:38.6866416Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:24:38.68665758Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:24:38.686668455Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:24:38.686680118Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:24:43.701923451Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:24:43.72964481Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:24:43.729778605Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:24:43.751263574Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:24:43.751303334Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:24:43.751318791Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:24:43.751329552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:24:43.751339136Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:24:48.774806039Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:24:48.804273036Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:24:48.804389024Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:24:48.824880089Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:24:48.824921437Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:24:48.82493433Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:24:48.824984024Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:24:48.824994124Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:24:53.843301106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:24:53.869865782Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:24:53.869999269Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:24:53.891198599Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:24:53.891249511Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:24:53.891264002Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:24:53.891292649Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:24:53.891301655Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:24:58.906761981Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:24:58.937765602Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:24:58.9378552Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:24:58.958648058Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:24:58.958704567Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:24:58.958719395Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:24:58.958730644Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:24:58.958739207Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:25:03.972948259Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:25:04.00288424Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:25:04.003008102Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:25:04.024994304Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:25:04.025046199Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:25:04.025060843Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:25:04.025072044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:25:04.02508142Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:25:09.040044127Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:25:09.070329614Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:25:09.070459073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:25:09.093989977Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:25:09.094029437Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:25:09.094043097Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:25:09.09405489Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:25:09.094065084Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:25:14.109272918Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:25:14.138790584Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:25:14.138887986Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:25:14.162302265Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:25:14.162344271Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:25:14.162358263Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:25:14.162369377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:25:14.162378787Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:25:19.182191086Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:25:19.211516304Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:25:19.211659259Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:25:19.23272023Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:25:19.232764344Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:25:19.232778552Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:25:19.232789617Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:25:19.232800682Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:25:24.248903867Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:25:24.277750156Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:25:24.277841668Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:25:24.301434814Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:25:24.301478826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:25:24.301493302Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:25:24.301506112Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:25:24.301515607Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:25:29.318429518Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:25:29.349121477Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:25:29.349251218Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:25:29.370465322Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:25:29.370505111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:25:29.370551823Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:25:29.37056244Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:25:29.370571294Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:25:34.388334828Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:25:34.418389905Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:25:34.418487782Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:25:34.442046743Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:25:39.461051272Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:25:39.489423996Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:25:39.489512479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:25:39.510853699Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:25:39.51089959Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:25:39.510914861Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:25:39.510926576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:25:39.510936972Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:25:44.527122509Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:25:44.557423749Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:25:44.557514391Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:25:44.579594123Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:25:44.579635142Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:25:44.579648413Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:25:44.579684319Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:25:44.579692923Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:25:49.598723114Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:25:49.629067291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:25:49.629182604Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:25:49.65162237Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:25:49.651664411Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:25:49.65167938Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:25:49.651691068Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:25:49.651700268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:25:54.666910434Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:25:54.696768104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:25:54.696875111Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:25:54.717528679Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:25:54.717583371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:25:54.71759942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:25:54.717609582Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:25:54.717618198Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:25:59.73663613Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:25:59.764323685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:25:59.764523813Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:25:59.788537248Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:25:59.788578942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:25:59.788595101Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:25:59.788607084Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:25:59.788616641Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:26:04.80528763Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:26:04.835175792Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:26:04.835311704Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:26:04.856820568Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:26:04.856861254Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:26:04.856875031Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:26:04.856897868Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:26:04.856907083Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:26:09.873213571Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:26:09.905108059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:26:09.905215133Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:26:09.927948806Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:26:09.927989689Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:26:09.928034954Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:26:09.928044743Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:26:09.928053164Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:26:14.942600172Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:26:14.973951997Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:26:14.974072201Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:26:14.996714703Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:26:14.996758483Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:26:14.996771782Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:26:14.996782784Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:26:14.99679289Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:26:20.018495646Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:26:20.049552256Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:26:20.049671932Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:26:20.070145755Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:26:20.070186384Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:26:20.070201063Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:26:20.07021256Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:26:20.070222302Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:26:25.088021591Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:26:25.118463955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:26:25.118581016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:26:25.146768311Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:26:25.146809858Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:26:25.146824039Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:26:25.146834899Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:26:30.163985668Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:26:30.193848851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:26:30.193981634Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:26:30.214177625Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:26:30.214231833Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:26:30.214256831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:26:30.214265708Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:26:30.214273672Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:26:35.23025314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:26:35.257991589Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:26:35.258098896Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:26:35.280943439Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:26:35.28099647Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:26:35.28101232Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:26:35.281024456Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:26:35.281033657Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:26:40.297866552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:26:40.327448233Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:26:40.32756036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:26:40.34760555Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:26:40.34766408Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:26:40.347678649Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:26:40.347689338Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:26:40.347698163Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:26:45.367272116Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:26:45.393830096Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:26:45.393947313Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:26:45.416262862Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:26:45.416312222Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:26:45.416327441Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:26:45.416337711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:26:45.416346499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:26:50.436687814Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:26:50.466498683Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:26:50.466637818Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:26:50.491103692Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:26:50.491146407Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:26:50.491159369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:26:55.508145691Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:26:55.53532454Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:26:55.53543276Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:26:55.559761013Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:26:55.559802638Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:26:55.559815731Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:26:55.559825569Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:26:55.559834256Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:27:00.575079915Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:27:00.60526645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:27:00.605356093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:27:00.625677452Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:27:00.625736762Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:27:00.625752671Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:27:00.625763842Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:27:00.625773095Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:27:05.644850519Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:27:05.676856295Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:27:05.676969373Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:27:05.701265524Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:27:05.701323902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:27:05.701337846Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:27:05.701348091Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:27:05.701356626Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:27:10.717290713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:27:10.745887958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:27:10.745995471Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:27:10.769155251Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:27:10.769199926Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:27:10.769215388Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:27:10.769227339Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:27:10.769249213Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:27:15.7865395Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:27:15.816761051Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:27:15.816883116Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:27:15.843179076Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:27:15.843253212Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:27:15.843268748Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:27:15.8433031Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:27:15.843312589Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:27:20.858299361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:27:20.887334431Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:27:20.887424525Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:27:20.908250568Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:27:20.908297813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:27:20.90831283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:27:20.908325432Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:27:20.908334882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:27:25.927517741Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:27:25.954146813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:27:25.954275471Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:27:25.980778283Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:27:25.980822306Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:27:25.980836479Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:27:25.980857583Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:27:25.980866758Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:27:30.996619554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:27:31.02502952Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:27:31.025123319Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:27:31.045374588Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:27:31.045436047Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:27:31.04545146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:27:31.045461871Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:27:31.045471152Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:27:36.061126021Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:27:36.091506826Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:27:36.091620057Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:27:36.112983182Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:27:36.113209955Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:27:36.113231413Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:27:36.113256918Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:27:36.113266174Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:27:41.132665642Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:27:41.163122767Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:27:41.163325718Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:27:41.185350754Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:27:41.185391324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:27:41.185404955Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:27:41.185417033Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:27:41.185427999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:27:46.204278284Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:27:46.234043255Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:27:46.234134249Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:27:46.254850159Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:27:46.254891333Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:27:46.25490452Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:27:46.254915928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:27:46.254926257Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:27:51.269312527Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:27:51.301614281Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:27:51.301731659Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:27:51.324159454Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:27:51.324204266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:27:51.324217959Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:27:51.324268282Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:27:51.324279112Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:27:56.342266976Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:27:56.371370391Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:27:56.371482673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:27:56.393003034Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:27:56.393091545Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:27:56.393108896Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:27:56.39311951Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:27:56.393256736Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T22:27:56.393554844Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T22:27:56.393128699Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:28:01.414466011Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:28:01.445328195Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:28:01.44543972Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:28:01.47318366Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:28:01.473254846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:28:01.473281808Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:28:01.473292247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:28:01.473301627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:28:06.487907194Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:28:06.51897168Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:28:06.519069587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:28:06.541860245Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:28:06.541906487Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:28:06.541939213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:28:06.541973585Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:28:06.541982524Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:28:11.558355822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:28:11.589424509Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:28:11.589522005Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:28:11.611950564Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:28:11.611998872Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:28:11.612012894Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:28:11.612026035Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:28:11.612035833Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:28:16.630275934Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:28:16.660814817Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:28:16.660928841Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:28:16.681717301Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:28:16.681758008Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:28:16.681772884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:28:16.681784021Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:28:16.681794418Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:28:21.701650583Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:28:21.730958269Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:28:21.731058247Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:28:21.752704459Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:28:21.75274786Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:28:21.75276392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:28:21.752794745Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:28:21.752805029Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:28:26.772304778Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:28:26.803069039Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:28:26.803185756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:28:26.827492773Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:28:26.827539063Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:28:26.827553052Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:28:26.827562796Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:28:26.827572876Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:28:31.844977151Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:28:31.876323562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:28:31.876522145Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:28:31.898032965Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:28:31.898453884Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:28:31.898627158Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:28:31.898668811Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:28:31.898681002Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:28:36.918270982Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:28:36.945516363Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:28:36.945637249Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:28:36.970398086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:28:36.970439398Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:28:36.970452682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:28:36.970462924Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:28:36.970473028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:28:41.990231726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:28:42.02017196Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:28:42.020282795Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:28:42.046485939Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:28:42.046526813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:28:42.046541103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:28:42.046582747Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:28:42.046591946Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:28:47.062317069Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:28:47.092301201Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:28:47.092425225Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:28:47.113328376Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:28:52.134297073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:28:52.160889014Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:28:52.160983124Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:28:52.181463329Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:28:52.181513207Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:28:52.181529506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:28:52.181541059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:28:52.181552308Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:28:57.197984561Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:28:57.225945733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:28:57.226040347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:28:57.249715051Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:28:57.249772582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:28:57.249787485Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:28:57.249798606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:28:57.249807601Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:29:02.267704887Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:29:02.298883611Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:29:02.298988528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:29:02.322688516Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:29:02.322730032Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:29:02.322776207Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:29:02.322787374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:29:02.322796615Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:29:07.339385963Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:29:07.370753806Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:29:07.370869469Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:29:07.391303061Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:29:07.391342425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:29:07.391357025Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:29:07.391368665Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:29:07.391378189Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:29:12.408279074Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:29:12.436923515Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:29:12.43703906Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:29:12.462276165Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:29:12.462317208Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:29:12.462342723Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:29:12.462352667Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:29:12.462361131Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:29:17.485288165Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:29:17.514105265Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:29:17.514218859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:29:17.538446484Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:29:17.538488126Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:29:17.538501563Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:29:17.538541182Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:29:17.538550077Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:29:22.556329271Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:29:22.585666394Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:29:22.585775465Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:29:22.609603431Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:29:22.609646Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:29:22.609676535Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:29:22.609687464Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:29:22.609696593Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:29:27.6261531Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:29:27.656257136Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:29:27.656380354Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:29:27.681652638Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:29:27.681707647Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:29:27.681721531Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:29:27.681731956Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:29:27.681741997Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:29:32.702143949Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:29:32.731614106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:29:32.731726783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:29:32.756054493Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:29:32.756095612Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:29:32.756109099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:29:32.756121621Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:29:32.756132106Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:29:37.771656908Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:29:37.801229984Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:29:37.801332331Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:29:37.820662278Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:29:37.820703741Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:29:37.820718091Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:29:37.820729264Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:29:37.820738645Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:29:42.837202352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:29:42.865369186Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:29:42.865483832Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:29:42.890168774Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:29:42.890208492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:29:42.890223504Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:29:42.890245404Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:29:42.890254786Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:29:47.909141938Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:29:47.937635955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:29:47.937739676Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:29:47.959796818Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:29:47.959852576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:29:47.959867995Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:29:47.959880568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:29:47.95988945Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:29:52.979002733Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:29:53.007420348Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:29:53.007516224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:29:53.034440904Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:29:53.034482637Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:29:53.03449754Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:29:53.034508276Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:29:53.03451858Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:29:58.050473624Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:29:58.081358693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:29:58.08146401Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:29:58.102258447Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:29:58.102307362Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:29:58.102321444Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:29:58.102333817Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:29:58.102342444Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:30:03.1327613Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:30:03.164323281Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:30:03.164495275Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:30:03.186613012Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:30:03.186661328Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:30:03.186675422Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:30:03.186684647Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:30:03.18669461Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:30:08.203460797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:30:08.235299919Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:30:08.235402459Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:30:08.257912703Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:30:08.257953592Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:30:08.257985938Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:30:08.257996182Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:30:08.258004349Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:30:13.272001639Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:30:13.301106067Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:30:13.30121409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:30:13.329187511Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:30:13.329227402Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:30:13.329253316Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:30:13.329265254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:30:13.329274366Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:30:18.347284232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:30:18.375999298Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:30:18.376117179Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:30:18.399946621Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:30:18.399991599Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:30:18.400005951Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:30:18.400018308Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:30:18.400027382Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:30:23.417293865Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:30:23.445624804Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:30:23.445732339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:30:23.467008773Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:30:23.467053655Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:30:23.467068423Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:30:23.467079534Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:30:23.467088052Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:30:28.483561033Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:30:28.51402805Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:30:28.514120998Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:30:28.538498613Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:30:28.538543154Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:30:28.538558331Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:30:28.538585783Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:30:28.538595452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:30:33.554193055Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:30:33.583372083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:30:33.583483196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:30:33.607580112Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:30:33.607620782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:30:33.607634361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:30:33.607645077Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:30:33.607653048Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:30:38.626315203Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:30:38.655046535Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:30:38.655166157Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:30:38.675119613Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:30:38.675162382Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:30:38.675176237Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:30:38.675186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:30:38.675195501Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:30:43.690535562Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:30:43.720362865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:30:43.720612073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:30:43.744060928Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:30:43.744102572Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:30:43.744116329Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:30:43.744144592Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:30:43.744153818Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:30:48.762569987Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:30:48.790664194Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:30:48.790786017Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:30:48.813191887Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:30:48.813247431Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:30:48.813262272Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:30:53.830763706Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:30:53.858856289Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:30:53.858975239Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:30:53.882615774Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:30:53.882659503Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:30:53.88267324Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:30:53.88268292Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:30:53.88269162Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:30:58.899446382Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:30:58.928216302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:30:58.92836358Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:30:58.950360921Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:30:58.950405132Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:30:58.950418684Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:30:58.950441968Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:30:58.950451477Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:31:03.96662398Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:31:03.995842526Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:31:03.995955016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:31:04.01872163Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:31:04.018768254Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:31:04.018782161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:31:04.018794949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:31:04.018804914Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:31:09.034467267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:31:09.06340868Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:31:09.063490402Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:31:09.085152434Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:31:09.085191743Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:31:09.085205906Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:31:09.085216544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:31:09.085225014Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:31:14.101193395Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:31:14.132844524Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:31:14.132930166Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:31:14.157203116Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:31:14.157258846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:31:14.157273785Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:31:14.157284711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:31:14.157293372Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:31:19.178455175Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:31:19.206031687Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:31:19.206118963Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:31:19.22729456Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:31:19.227335782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:31:19.2273494Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:31:19.227360897Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:31:19.227371409Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:31:24.243491614Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:31:24.273938402Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:31:24.274045606Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:31:24.297855762Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:31:24.297906387Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:31:24.297922847Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:31:24.297933119Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:31:24.297944607Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:31:29.317305119Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:31:29.347308284Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:31:29.347419481Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:31:29.367637913Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:31:29.367681763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:31:29.36769486Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:31:29.3677056Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:31:29.367715383Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:31:34.385135309Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:31:34.414852574Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:31:34.414961056Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:31:34.440740398Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:31:34.440785927Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:31:34.440800456Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:31:34.440811778Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:31:34.440823311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:31:39.45705682Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:31:39.485984976Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:31:39.486087242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:31:39.508320005Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:31:39.508359388Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:31:39.508373117Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:31:39.508383637Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:31:39.508393116Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:31:44.524270077Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:31:44.554143835Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:31:44.55427717Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:31:44.577154726Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:31:44.57720236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:31:44.577218181Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:31:44.577228765Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:31:44.577252918Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:31:49.594685681Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:31:49.623990432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:31:49.624104362Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:31:49.644708946Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:31:49.644750615Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:31:49.644764841Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:31:49.644776289Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:31:49.64478615Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:31:54.666923612Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:31:54.693424882Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:31:54.69351256Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:31:54.71442568Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:31:54.714472373Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:31:54.71448604Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:31:54.714514256Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:31:54.7145235Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:31:59.730524197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:31:59.761945563Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:31:59.76204237Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:31:59.781762344Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:31:59.781804563Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:31:59.781817899Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:31:59.78182994Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:31:59.781840244Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:32:04.800305677Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:32:04.831220331Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:32:04.831337435Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:32:04.85520105Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:32:04.855263551Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:32:04.855278448Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:32:04.855287581Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:32:04.855297428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:32:09.873172031Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:32:09.904499059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:32:09.904615494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:32:09.927838109Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:32:09.927898242Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:32:09.92791448Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:32:09.927923564Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:32:09.92793227Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:32:14.943386755Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:32:14.973855791Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:32:14.973967542Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:32:14.996635908Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:32:14.99670406Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:32:14.996719333Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:32:14.996728568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:32:14.996737563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:32:20.014951784Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:32:20.042726092Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:32:20.042830898Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:32:20.067799056Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:32:20.067864588Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:32:20.067880296Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:32:20.06789291Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:32:20.067903371Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:32:25.082485537Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:32:25.110880474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:32:25.110986352Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:32:25.136067681Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:32:25.136108801Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:32:25.136124066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:32:25.136136369Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:32:25.136144943Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:32:30.153549907Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:32:30.187027627Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:32:30.187128298Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:32:30.209547224Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:32:30.209591567Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:32:30.209605447Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:32:30.209617438Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:32:30.209627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:32:35.226287579Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:32:35.255921432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:32:35.256009616Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:32:35.280295462Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:32:35.280337461Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:32:35.280370982Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:32:35.280381317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:32:35.280390278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:32:40.299037332Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:32:40.327919925Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:32:40.328051553Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:32:40.352385951Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:32:40.352429361Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:32:40.352570578Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:32:40.352582305Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:32:40.35259145Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:32:45.371291282Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:32:45.400230204Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:32:45.400336902Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:32:45.421265953Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:32:45.421308438Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:32:45.421322978Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:32:45.421333224Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:32:45.42134367Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:32:50.440050807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:32:50.472687217Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:32:50.472807663Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:32:50.493697568Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:32:50.493752055Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:32:50.493767524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:32:50.493777363Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:32:50.493786509Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:32:55.513279207Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:32:55.541328373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:32:55.541450558Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:32:55.565938043Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:32:55.565980687Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:32:55.565994734Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:32:55.566006481Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:32:55.566016797Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:33:00.58138585Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:33:00.609702803Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:33:00.609810352Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:33:00.630941758Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:33:00.630982486Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:33:00.630996645Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:33:00.631008284Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:33:00.631018727Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:33:05.649471368Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:33:05.680044767Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:33:05.680144845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:33:05.70630011Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:33:05.706344019Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:33:05.706358137Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:33:05.706368407Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:33:05.706378651Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:33:10.726148412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:33:10.754739248Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:33:10.754835467Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:33:10.777245208Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:33:10.777286095Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:33:10.777323802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:33:10.777334496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:33:10.777343003Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:33:15.79217352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:33:15.823554892Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:33:15.823675458Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:33:15.847166153Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:33:15.847212543Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:33:15.847225815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:33:15.847246933Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:33:15.847256316Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:33:20.866447267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:33:20.895646939Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:33:20.895745181Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:33:20.918560215Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:33:20.918606008Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:33:20.918620553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:33:20.918632884Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:33:20.918642492Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:33:25.932596407Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:33:25.963331912Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:33:25.963424948Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:33:25.987082151Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:33:25.987122528Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:33:25.987174713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:33:25.987186046Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:33:25.987194618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:33:31.003164999Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:33:31.03475619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:33:31.034879297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:33:31.060731167Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:33:31.060772888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:33:31.060788126Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:33:31.060800061Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:33:31.060809798Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:33:36.074563521Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:33:36.104430166Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:33:36.104631727Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:33:36.128943025Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:33:36.128990621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:33:36.12900546Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:33:36.129031566Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:33:36.129040796Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:33:41.149545517Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:33:41.179268264Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:33:41.179374155Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:33:41.202769677Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:33:41.20281069Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:33:41.202823766Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:33:41.202835861Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:33:41.202845397Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:33:46.221557633Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:33:46.250704702Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:33:46.25082352Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:33:46.274904854Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:33:46.274950227Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:33:46.274962823Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:33:46.274973649Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:33:46.2749837Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:33:51.293695537Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:33:51.321271002Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:33:51.321430462Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:33:51.346460104Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:33:51.34650264Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:33:51.346515948Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:33:51.34652825Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:33:51.346538933Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:33:56.36730931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:33:56.395292982Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:33:56.395392482Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:33:56.416754855Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:33:56.4167963Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:33:56.416809573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:33:56.416822124Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:33:56.416831624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:34:01.433271823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:34:01.468123556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:34:01.468266407Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:34:01.497476523Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:34:01.497520318Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:34:01.497534244Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:34:01.497545681Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:34:01.497555215Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:34:06.513990395Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:34:06.541901129Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:34:06.541990806Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:34:06.568126615Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:34:06.568171087Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:34:06.568185262Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:34:06.568195823Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:34:06.568204339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:34:11.588558595Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:34:11.618833066Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:34:11.618954973Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:34:11.643496347Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:34:11.643553854Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:34:11.643569568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:34:11.643601778Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:34:11.643626242Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:34:16.663599442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:34:16.690118082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:34:16.690255818Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:34:16.713350508Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:34:16.713396348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:34:16.713413097Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:34:16.71342442Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:34:16.713434149Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:34:21.730384453Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:34:21.760198638Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:34:21.760328564Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:34:21.782697872Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:34:21.782740118Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:34:26.803789684Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:34:26.833340658Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:34:26.833452294Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:34:26.857832465Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:34:26.857882057Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:34:26.857896654Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:34:26.857907796Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:34:26.857915038Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:34:31.877972752Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:34:31.909269493Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:34:31.909361437Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:34:31.932280089Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:34:31.932320601Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:34:31.932359607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:34:31.932386465Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:34:31.932396083Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:34:36.94752526Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:34:36.977651336Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:34:36.977740073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:34:37.001026557Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:34:37.00107047Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:34:37.001084331Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:34:42.020309278Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:34:42.052402964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:34:42.052663876Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:34:42.076848421Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:34:42.076895129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:34:42.076911197Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:34:42.076923732Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:34:42.076934138Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:34:47.095611093Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:34:47.125686897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:34:47.125800138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:34:47.147877206Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:34:47.148253115Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:34:47.148273639Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:34:47.148287556Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:34:47.148308561Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:34:52.164579621Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:34:52.196750685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:34:52.196845982Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:34:52.220587274Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:34:52.220635483Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:34:52.22065066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:34:52.220661929Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:34:52.220670493Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:34:57.236157139Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:34:57.265477345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:34:57.265570383Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:34:57.290255404Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:34:57.29029642Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:34:57.290311017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:34:57.29032169Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:35:02.311485412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:35:02.339497193Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:35:02.339624434Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:35:02.362270952Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:35:02.362314021Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:35:02.362327882Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:35:02.362338413Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:35:02.362348514Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:35:07.377384864Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:35:07.406300338Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:35:07.406409454Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:35:07.427823239Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:35:07.427863262Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:35:07.427878524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:35:07.427890527Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:35:07.427899785Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:35:12.447306454Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:35:12.476674855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:35:12.476798989Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:35:12.502132034Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:35:12.502197296Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:35:12.502212051Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:35:12.502221901Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:35:12.502230488Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:35:17.519220868Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:35:17.551369987Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:35:17.551486434Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:35:17.572075623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:35:17.572117065Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:35:17.572147617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:35:17.572158298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:35:17.572167558Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:35:22.593411148Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:35:22.623826037Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:35:22.623976298Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:35:22.647012803Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:35:22.647056179Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:35:22.647075596Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:35:22.647088093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:35:22.647098662Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:35:27.662095686Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:35:27.69379534Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:35:27.693913644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:35:27.719084401Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:35:27.719294708Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:35:27.719314325Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:35:27.719444458Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T22:35:27.719756767Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T22:35:27.719911193Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:35:27.719927581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:35:32.738026995Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:35:32.768126989Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:35:32.768218444Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:35:32.787492583Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:35:32.787533753Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:35:32.787546842Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:35:32.787556971Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:35:32.787565272Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:35:37.803692349Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:35:37.834081459Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:35:37.83417525Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:35:37.858998893Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:35:37.859062769Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:35:37.859120113Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:35:37.859146786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:35:37.859156966Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:35:42.878621246Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:35:42.909181106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:35:42.909325218Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:35:42.932839414Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:35:42.93288026Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:35:42.932895809Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:35:42.932906248Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:35:42.932915727Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:35:47.954074156Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:35:47.983746549Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:35:47.983846496Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:35:48.005585386Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:35:48.005647901Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:35:48.005662605Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:35:48.005672977Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:35:48.00568208Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:35:53.029185277Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:35:53.059805197Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:35:53.059947264Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:35:53.091071844Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:35:53.091118046Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:35:53.091132907Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:35:53.091145596Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:35:53.091157293Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:35:58.109530655Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:35:58.137911395Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:35:58.13800949Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:35:58.162446284Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:35:58.162487798Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:35:58.162501487Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:35:58.16251241Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:35:58.162523063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:36:03.176854493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:36:03.211495445Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:36:03.211617567Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:36:03.236416098Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:36:03.236620939Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:36:03.236640004Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:36:03.236651076Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:36:03.236661079Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:36:08.251555963Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:36:08.284659629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:36:08.284789193Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:36:08.307418613Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:36:08.307464099Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:36:08.307478021Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:36:08.307488409Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:36:08.307497009Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:36:13.323562257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:36:13.353362405Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:36:13.353450934Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:36:13.376096089Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:36:13.376142756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:36:13.376156676Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:36:13.376189497Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:36:13.376199113Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:36:18.390689174Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:36:18.418567087Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:36:18.418663071Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:36:18.440065452Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:36:18.440118466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:36:18.440133444Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:36:18.440143771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:36:18.440152146Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:36:23.455039957Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:36:23.483201963Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:36:23.483322545Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:36:23.504098101Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:36:23.504294317Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:36:23.504312975Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:36:23.504323889Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:36:23.504333315Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:36:28.524525878Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:36:28.561452745Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:36:28.56163206Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:36:28.582877152Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:36:28.582921585Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:36:28.582935023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:36:28.582946462Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:36:28.582956658Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:36:33.600187974Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:36:33.630098065Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:36:33.630213459Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:36:33.652886111Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:36:33.652929903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:36:33.652943772Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:36:33.652953815Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:36:33.652963069Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:36:38.668092285Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:36:38.699882462Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:36:38.699989548Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:36:38.721776636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:36:38.721828055Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:36:38.721843917Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:36:38.721855533Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:36:38.721864273Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:36:43.737775994Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:36:43.765989627Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:36:43.766095792Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:36:43.787804184Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:36:43.787851944Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:36:43.787867376Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:36:43.787876263Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:36:43.787883096Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:36:48.806227419Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:36:48.839179546Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:36:48.839295038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:36:48.86150768Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:36:48.861550657Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:36:48.861564745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:36:48.861575925Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:36:48.861586096Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:36:53.876290703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:36:53.907524352Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:36:53.907607637Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:36:53.930022088Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:36:53.930064201Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:36:53.930096246Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:36:53.930136139Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:36:53.930145203Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:36:58.946266152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:36:58.97751848Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:36:58.977638544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:36:58.99811107Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:36:58.998161648Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:36:58.99817781Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:36:58.998188284Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:36:58.99819666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:37:04.014465071Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:37:04.045712737Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:37:04.045848806Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:37:04.067522581Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:37:04.067562602Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:37:04.067601918Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:37:04.067612602Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:37:04.067620748Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:37:09.08413968Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:37:09.117085036Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:37:09.117209587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:37:09.139532635Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:37:09.139573919Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:37:09.139590572Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:37:09.139602488Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:37:09.139614401Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:37:14.156452637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:37:14.187756642Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:37:14.187847993Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:37:14.211818905Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:37:14.211863968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:37:14.211971032Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:37:14.211985575Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:37:14.211995159Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:37:19.232311075Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:37:19.262968811Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:37:19.263057642Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:37:19.28425793Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:37:19.284313192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:37:19.284329796Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:37:19.284339119Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:37:19.284347444Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:37:24.298842573Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:37:24.329302889Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:37:24.32940696Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:37:24.351033286Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:37:24.351074642Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:37:24.351088949Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:37:24.351100212Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:37:24.351109936Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:37:29.369551281Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:37:29.399037992Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:37:29.399164495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:37:29.420189533Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:37:29.420230331Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:37:29.420255754Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:37:29.420266481Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:37:29.420274868Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:37:34.437902009Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:37:34.466936218Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:37:34.467050865Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:37:34.491843793Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:37:34.491886075Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:37:34.491930867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:37:34.491941693Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:37:34.491949925Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:37:39.513304869Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:37:39.542144105Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:37:39.542225068Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:37:39.563751197Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:37:44.5798493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:37:44.608928015Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:37:44.609019441Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:37:44.631872827Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:37:44.631915351Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:37:44.631947636Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:37:44.631958517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:37:44.631966806Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:37:49.647163944Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:37:49.67454206Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:37:49.674651294Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:37:49.697702682Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:37:49.697747506Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:37:49.69776121Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:37:49.697772099Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:37:49.697781979Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:37:54.716270552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:37:54.743185796Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:37:54.74330957Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:37:54.764751432Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:37:54.764791104Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:37:54.764805506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:37:59.780192291Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:37:59.808919358Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:37:59.809038388Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:37:59.830746722Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:37:59.830790092Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:37:59.830804917Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:37:59.830815264Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:37:59.830824912Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:38:04.848266882Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:38:04.8782335Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:38:04.878346098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:38:04.899777603Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:38:04.899835676Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:38:04.89985122Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:38:04.899907354Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:38:04.899918279Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:38:09.921014272Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:38:09.950678468Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:38:09.950804182Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:38:09.975658286Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:38:09.975697836Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:38:09.975710756Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:38:09.975722913Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:38:09.975733076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:38:14.991393468Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:38:15.023389462Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:38:15.023490776Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:38:15.050497902Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:38:15.050550249Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:38:15.050564458Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:38:15.050575395Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:38:15.050585725Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:38:20.070841722Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:38:20.101934425Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:38:20.102056953Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:38:20.123571214Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:38:20.123634533Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:38:20.123651529Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:38:20.123663403Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:38:20.123741208Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:38:25.138586453Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:38:25.170631631Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:38:25.170721013Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:38:25.19160171Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:38:25.191659443Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:38:30.208618588Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:38:30.238587417Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:38:30.238720694Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:38:30.260950397Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:38:30.260993238Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:38:30.261007405Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:38:30.26101954Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:38:30.26102908Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:38:35.279474252Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:38:35.310394878Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:38:35.31048572Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:38:35.335813164Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:38:35.335861087Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:38:35.335875004Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:38:35.335886015Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:38:35.335896603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:38:40.354921133Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:38:40.385708181Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:38:40.385824573Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:38:40.410655202Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:38:40.410696585Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:38:40.410710508Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:38:40.410721266Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:38:40.410731979Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:38:45.42907226Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:38:45.457041219Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:38:45.457154137Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:38:45.482193957Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:38:45.48224953Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:38:45.482264682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:38:45.48227529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:38:45.48228421Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:38:50.497786753Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:38:50.527067418Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:38:50.527154205Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:38:50.549332449Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:38:50.549383802Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:38:50.549418351Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:38:50.549449923Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:38:50.549460018Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:38:55.56830093Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:38:55.598692524Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:38:55.598807056Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:38:55.620714987Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:38:55.620754579Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:38:55.620770361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:38:55.620781941Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:38:55.620793739Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:39:00.634877195Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:39:00.665857004Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:39:00.665962076Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:39:00.68859648Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:39:00.688637797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:39:00.688652947Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:39:00.688664193Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:39:00.688674267Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:39:05.703709361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:39:05.734535301Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:39:05.734650616Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:39:05.760223636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:39:05.760283196Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:39:05.760297885Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:39:05.760308391Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:39:05.760318147Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:39:10.779317894Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:39:10.809131307Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:39:10.809328327Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:39:10.832644438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:39:10.83268793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:39:10.832702057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:39:10.83271378Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:39:10.832723558Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:39:15.852283312Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:39:15.88117267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:39:15.881297225Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:39:15.906105303Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:39:15.906159646Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:39:15.906174961Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:39:15.906186035Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:39:15.906194479Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:39:20.926315865Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:39:20.957352243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:39:20.957466635Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:39:20.979838995Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:39:20.97988135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:39:20.979896254Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:39:20.979906476Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:39:20.979916412Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:39:25.99595173Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:39:26.028341149Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:39:26.028564007Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:39:26.049894355Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:39:26.049935113Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:39:26.04994873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:39:26.049983654Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:39:26.049993038Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:39:31.068546453Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:39:31.099005332Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:39:31.099101903Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:39:31.123346135Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:39:31.12338645Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:39:31.123399655Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:39:31.123433858Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:39:31.123443256Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:39:36.140054562Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:39:36.167743105Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:39:36.167840941Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:39:36.194288016Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:39:36.194330772Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:39:36.194345226Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:39:36.194355214Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:39:36.194364098Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:39:41.214954802Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:39:41.24613146Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:39:41.246221219Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:39:41.269230705Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:39:41.269289694Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:39:41.269305052Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:39:41.269316364Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:39:41.269325742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:39:46.287082137Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:39:46.318824078Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:39:46.318948305Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:39:46.339841716Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:39:46.339883196Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:39:46.339896891Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:39:46.339906859Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:39:46.339915699Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:39:51.359367087Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:39:51.388136053Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:39:51.388226282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:39:51.412217785Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:39:51.412278114Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:39:56.431382217Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:39:56.459411732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:39:56.459525444Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:39:56.482434312Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:39:56.482485361Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:39:56.482500493Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:39:56.482511986Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:39:56.482521548Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:40:01.504609092Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:40:01.565795089Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:40:01.565960221Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:40:01.644049555Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:40:01.64411085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:40:01.644127046Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:40:01.644187737Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:40:01.644198155Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:40:06.660279207Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:40:06.689578691Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:40:06.689687378Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:40:06.710714164Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:40:06.710756704Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:40:06.710771924Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:40:06.710783274Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:40:06.710792389Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:40:11.726366339Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:40:11.757972522Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:40:11.758093027Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:40:11.77941126Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:40:11.779451055Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:40:11.779482059Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:40:11.77949287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:40:11.779501275Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:40:16.798821346Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:40:16.827432035Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:40:16.827527299Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:40:16.848674917Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:40:16.848732815Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:40:16.848748393Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:40:16.848801238Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:40:16.848811057Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:40:21.868857413Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:40:21.899031575Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:40:21.899133986Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:40:21.92398373Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:40:21.924041347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:40:21.924055696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:40:21.924064904Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:40:21.924072807Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:40:26.941262534Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:40:26.968333521Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:40:26.968574846Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:40:26.991194942Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:40:26.991255643Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:40:26.991269563Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:40:26.991290176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:40:26.991298882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:40:32.010691528Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:40:32.041973083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:40:32.042097518Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:40:32.06562373Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:40:32.065680987Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:40:32.065696757Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:40:32.06570707Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:40:32.065716341Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:40:37.08191977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:40:37.112659474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:40:37.112776632Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:40:37.137045099Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:40:37.1370967Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:40:37.137112289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:40:37.137122766Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:40:37.137131494Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:40:42.156101985Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:40:42.188591994Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:40:42.188708955Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:40:42.212649855Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:40:42.212695633Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:40:42.212711384Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:40:42.212722963Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:40:42.21273271Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:40:47.23057502Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:40:47.262001779Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:40:47.262122924Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:40:47.287824009Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:40:47.287866543Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:40:47.287880042Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:40:47.287892376Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:40:52.310283763Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:40:52.339764011Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:40:52.339853177Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:40:52.360307069Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:40:52.360352746Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:40:52.360366621Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:40:52.36037704Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:40:52.360519046Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:40:57.374717098Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:40:57.405428759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:40:57.405521081Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:40:57.426027699Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:40:57.426075098Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:40:57.426089138Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:40:57.426100293Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:40:57.426110603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:41:02.447483685Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:41:02.480106098Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:41:02.480203341Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:41:02.505342052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:41:02.505388528Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:41:02.505403412Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:41:02.505415176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:41:02.50542529Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:41:07.524098078Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:41:07.551333172Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:41:07.551445815Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:41:07.575028002Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:41:07.575070744Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:41:07.575084429Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:41:07.575127097Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:41:07.575136138Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:41:12.593161169Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:41:12.622811265Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:41:12.622917286Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:41:12.646809755Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:41:12.646868576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:41:12.64688308Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:41:12.646893059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:41:12.646901597Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:41:17.664316619Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:41:17.695306779Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:41:17.695411816Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:41:17.716834048Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:41:17.716889296Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:41:17.716905443Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:41:17.71691502Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:41:17.716924199Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:41:22.734687088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:41:22.763989242Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:41:22.764107765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:41:22.787195147Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:41:22.787249278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:41:22.787264492Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:41:22.787298724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:41:22.787307845Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:41:27.802086451Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:41:27.832019783Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:41:27.832126539Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:41:27.854946272Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:41:27.854997278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:41:27.855013427Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:41:27.855025435Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:41:27.855034943Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:41:32.874616023Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:41:32.905409201Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:41:32.905519291Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:41:32.930857735Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:41:32.930900652Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:41:32.930915878Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:41:32.930927709Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:41:32.930937396Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:41:37.948718988Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:41:37.977518399Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:41:37.977614544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:41:38.001626573Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:41:38.001686871Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:41:38.001703358Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:41:38.001713547Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:41:38.001722166Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:41:43.020378126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:41:43.048360927Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:41:43.048545678Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:41:43.070706259Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:41:43.070749008Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:41:43.070764406Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:41:43.070776114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:41:43.070784805Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:41:48.093374562Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:41:48.12171209Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:41:48.121802891Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:41:48.14660804Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:41:48.146663408Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:41:48.146679266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:41:48.146690749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:41:48.146699731Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:41:53.162825249Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:41:53.193647407Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:41:53.193793107Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:41:53.215652291Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:41:53.215694803Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:41:53.215708969Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:41:53.215721074Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:41:53.215730411Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:41:58.231302437Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:41:58.2595359Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:41:58.259660963Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:41:58.28379641Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:41:58.283854064Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:41:58.283869604Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:41:58.283879982Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:41:58.283888715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:42:03.299699227Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:42:03.330820788Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:42:03.330922829Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:42:03.355686772Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:42:03.355729307Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:42:03.355744216Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:42:03.35575614Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:42:03.355765971Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:42:08.372796871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:42:08.402883593Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:42:08.402981394Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:42:08.429659449Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:42:08.429700814Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:42:08.429714499Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:42:08.429727123Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:42:08.429736126Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:42:13.442337635Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:42:13.47476468Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:42:13.474861832Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:42:13.500928504Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:42:13.500972871Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:42:13.500987704Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:42:13.500998836Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:42:13.501008251Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:42:18.522198514Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:42:18.550876231Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:42:18.550988045Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:42:18.576085285Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:42:18.576298347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:42:18.576318028Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:42:18.576338636Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:42:18.576348377Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:42:23.591450951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:42:23.624535477Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:42:23.624634932Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:42:23.646596436Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:42:23.646643635Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:42:23.646658315Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:42:23.646669662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:42:23.646678792Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:42:28.662306534Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:42:28.693407475Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:42:28.69350302Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:42:28.720078794Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:42:28.720120569Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:42:28.720135746Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:42:28.720168925Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:42:28.720179908Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:42:33.737297696Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:42:33.765754072Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:42:33.765845882Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:42:33.789505383Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:42:33.789568634Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:42:33.789586085Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:42:33.789596415Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:42:33.78960589Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:42:38.809665851Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:42:38.839319833Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:42:38.839433768Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:42:38.863003521Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:42:38.863046591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:42:38.863061337Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:42:38.863072445Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:42:38.863081507Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:42:43.879031138Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:42:43.911128821Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:42:43.911283705Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:42:43.934784669Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:42:43.934829136Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:42:43.934844102Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:42:43.93485551Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:42:43.934864228Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:42:48.955068775Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:42:48.984925966Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:42:48.985036686Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:42:49.008571153Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:42:49.008615833Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:42:49.008629557Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:42:49.008640284Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:42:49.008649196Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:42:54.026286589Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:42:54.055488998Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:42:54.055599025Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:42:54.080910225Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:42:54.080965667Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:42:54.080981103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:42:54.081010993Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:42:54.081020877Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:42:59.099329205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:42:59.128111884Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:42:59.128218218Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:42:59.153093261Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:42:59.153142649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:42:59.153156567Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:42:59.153167894Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:42:59.153178787Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:43:04.168567552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:43:04.198645745Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:43:04.198758925Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:43:04.223940752Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:43:04.223991645Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:43:04.224005384Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:43:04.224017424Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:43:04.224027159Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:43:09.244397312Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:43:09.276541708Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:43:09.276668664Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:43:09.29979014Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:43:09.29983534Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:43:09.299849765Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:43:09.299860186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:43:09.299870147Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:43:14.316514843Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:43:14.345987103Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:43:14.346110159Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:43:14.369666647Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:43:14.369708427Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:43:14.36972361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:43:14.369735281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:43:14.36974541Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:43:19.388517881Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:43:19.418113911Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:43:19.418211665Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:43:19.443892153Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:43:19.443934833Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:43:19.443950055Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:43:19.443962409Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:43:19.443971425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:43:24.460308791Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:43:24.489383433Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:43:24.48949483Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:43:24.511375882Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:43:24.51142185Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:43:24.511436634Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:43:24.511446569Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:43:24.511455178Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:43:29.530361317Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:43:29.562167526Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:43:29.562309428Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:43:29.586043474Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:43:29.586111188Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:43:29.586125631Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:43:29.586136717Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:43:29.586145115Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:43:34.601611234Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:43:34.630948126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:43:34.631059814Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:43:34.651367368Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:43:34.651407871Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:43:34.651422161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:43:34.651432926Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:43:34.651443582Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:43:39.668116717Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:43:39.697542795Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:43:39.697665238Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:43:39.718166255Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:43:39.718208561Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:43:39.718222841Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:43:39.718245184Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:43:39.718255232Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:43:44.73630437Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:43:44.766012431Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:43:44.766103404Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:43:44.788678009Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:43:44.788721243Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:43:44.788749284Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:43:49.809280431Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:43:49.840085721Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:43:49.840201868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:43:49.86397802Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:43:49.864023221Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:43:49.864037486Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:43:49.864048406Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:43:49.864058929Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:43:54.879834879Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:43:54.907967383Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:43:54.908075105Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:43:54.927349487Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:43:54.927390133Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:43:54.927405027Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:43:54.927416012Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:43:59.944559363Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:43:59.972346068Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:43:59.972618767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:43:59.993437124Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:43:59.993480089Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:43:59.993494402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:43:59.993507217Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:43:59.993517195Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:44:05.009727815Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:44:05.040848597Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:44:05.040969627Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:44:05.063767522Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:44:05.063823637Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:44:05.063840307Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:44:05.063850723Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:44:05.063859232Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:44:10.084303239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:44:10.113926046Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:44:10.114059241Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:44:10.139802081Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:44:10.139856645Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:44:10.139872438Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:44:10.139883539Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:44:10.139891835Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:44:15.15927605Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:44:15.188642145Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:44:15.188776654Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:44:15.214060135Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:44:15.214105684Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:44:15.214119806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:44:15.214130505Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:44:15.214140205Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:44:20.233097881Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:44:20.262830581Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:44:20.26292087Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:44:20.286805956Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:44:20.28684904Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:44:20.286864174Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:44:20.286875845Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:44:20.286885061Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:44:25.303367342Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:44:25.334003095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:44:25.334125546Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:44:25.359049048Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:44:25.359094588Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:44:25.359108873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:44:25.359120646Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:44:30.378668534Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:44:30.408447729Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:44:30.408547899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:44:30.434880472Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:44:30.43492329Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:44:30.434937382Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:44:30.434976706Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:44:30.434986682Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:44:35.450679897Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:44:35.479930489Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:44:35.480027168Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:44:35.503177497Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:44:35.503217083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:44:35.5032305Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:44:35.503254852Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:44:35.503263583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:44:40.518295608Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:44:40.549357615Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:44:40.549456162Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:44:40.573603261Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:44:40.573645617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:44:40.573662722Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:44:40.573684637Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:44:40.573694007Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:44:45.593307556Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:44:45.624774216Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:44:45.624864657Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:44:45.646888968Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:44:45.646935209Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:44:45.646948863Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:44:45.646960041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:44:45.646969864Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:44:50.667514375Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:44:50.69575754Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:44:50.695850523Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:44:50.719488509Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:44:50.719531744Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:44:50.719547999Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:44:50.719559775Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:44:50.719569526Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:44:55.73508751Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:44:55.764353135Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:44:55.764590494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:44:55.789100545Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:44:55.789142438Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:44:55.789157743Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:44:55.789167912Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:44:55.789177136Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:45:00.806588037Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:45:00.836753757Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:45:00.836877343Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:45:00.860607657Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:45:00.860652917Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:45:00.860668477Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:45:00.860726316Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:45:00.860736795Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:45:05.879282263Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:45:05.909216157Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:45:05.909345103Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:45:05.933535868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:45:05.93359559Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:45:05.933609577Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:45:05.933621387Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:45:05.933643235Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:45:10.949332241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:45:10.978057498Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:45:10.978146318Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:45:10.999467792Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:45:10.999511246Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:45:10.999527503Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:45:10.999538629Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:45:10.999547802Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:45:16.018509069Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:45:16.049361234Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:45:16.049469857Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:45:16.074143649Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:45:16.074199503Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:45:16.074214849Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:45:16.074254298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:45:16.074264185Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:45:21.09049416Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:45:21.11903936Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:45:21.119143857Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:45:21.142382276Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:45:21.142425516Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:45:21.142439797Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:45:21.142451087Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:45:21.142460103Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:45:26.157738275Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:45:26.190687161Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:45:26.190813703Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:45:26.215418773Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:45:26.215464552Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:45:26.215478626Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:45:26.215488066Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:45:26.215497803Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:45:31.235358621Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:45:31.265936158Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:45:31.266048843Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:45:31.286707086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:45:31.286751166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:45:36.302584447Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:45:36.33207364Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:45:36.332187366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:45:36.352086766Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:45:36.352141654Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:45:36.352156884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:45:36.352167756Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:45:36.352176401Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:45:41.369107375Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:45:41.398321357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:45:41.398420522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:45:41.421403977Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:45:41.421444386Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:45:41.42145811Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:45:41.421469843Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:45:41.421480236Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:45:46.438288873Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:45:46.467634541Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:45:46.467724898Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:45:46.490015408Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:45:46.490061246Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:45:46.490077883Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:45:46.490099152Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:45:46.490109317Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:45:51.50933305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:45:51.53715343Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:45:51.537252789Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:45:51.556786711Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:45:51.556843778Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:45:51.556857393Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:45:51.556867817Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:45:51.556877274Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:45:56.573290428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:45:56.602995635Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:45:56.603088271Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:45:56.627672902Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:45:56.627724387Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:45:56.627751692Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:45:56.627762326Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:45:56.627770638Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:46:01.647110985Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:46:01.67566014Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:46:01.675758168Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:46:01.699814763Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:46:01.699862727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:46:01.69987715Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:46:01.699887215Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:46:01.699897894Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:46:06.716357129Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:46:06.744192645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:46:06.744326403Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:46:06.76986445Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:46:06.769909049Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:46:06.769923111Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:46:06.769934797Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:46:06.76994424Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:46:11.789274782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:46:11.818652191Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:46:11.81876975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:46:11.842782138Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:46:11.842821897Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:46:11.842875289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:46:11.842886427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:46:11.842895378Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:46:16.860419056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:46:16.890532341Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:46:16.890640497Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:46:16.916183883Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:46:16.91624796Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:46:16.916263895Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:46:16.916318443Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:46:16.916328412Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:46:21.935831948Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:46:21.964984165Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:46:21.9650914Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:46:21.988023994Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:46:21.988067715Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:46:21.988082021Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:46:21.988092328Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:46:21.98810235Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:46:27.005271674Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:46:27.035174098Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:46:27.035275755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:46:27.057132029Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:46:27.057186138Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:46:27.057203718Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:46:27.057214074Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:46:27.057222475Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:46:32.076512444Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:46:32.106757677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:46:32.106878736Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:46:32.126750126Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:46:32.126804811Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:46:32.126821103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:46:32.126830552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:46:32.126839155Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:46:37.141761554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:46:37.171017949Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:46:37.171116676Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:46:37.195116106Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:46:37.195158936Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:46:37.195172744Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:46:37.195184339Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:46:37.195193579Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:46:42.219192161Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:46:42.250516285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:46:42.250656893Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:46:42.274060597Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:46:42.274107518Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:46:42.274122306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:46:42.274132927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:46:42.274141898Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:46:47.294328345Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:46:47.324074307Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:46:47.324175342Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:46:47.347748091Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:46:47.34778965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:46:47.347804389Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:46:47.347845538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:46:47.347854772Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:46:52.364385731Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:46:52.394688504Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:46:52.395139717Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:46:52.417438326Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:46:52.417869649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:46:52.418040554Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:46:52.418187431Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:46:52.418346991Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:46:57.434464621Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:46:57.463413142Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:46:57.463506269Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:46:57.484353006Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:46:57.484499347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:46:57.484519078Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:46:57.484528802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:47:02.501287046Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:47:02.531044005Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:47:02.531160476Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:47:02.558841381Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:47:02.558882923Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:47:02.558942658Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:47:02.558953664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:47:02.558962618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:47:07.57694195Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:47:07.607495899Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:47:07.607596005Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:47:07.630703332Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:47:07.630745267Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:47:07.630759352Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:47:07.630770576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:47:12.647857326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:47:12.677914021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:47:12.678009164Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:47:12.701161491Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:47:12.70120412Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:47:17.723057934Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:47:17.753068497Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:47:17.753177147Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:47:17.776956933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:47:17.776997531Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:47:17.777013123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:47:17.777024262Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:47:17.77703506Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:47:22.793463776Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:47:22.823330454Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:47:22.823453807Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:47:22.847780063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:47:22.847824617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:47:22.847837986Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:47:22.847848649Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:47:22.847857092Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:47:27.86309199Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:47:27.894770413Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:47:27.894909138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:47:27.914755149Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:47:27.914797165Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:47:27.914811491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:47:27.914823277Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:47:27.914832844Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:47:32.933148131Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:47:32.963111528Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:47:32.963229555Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:47:32.991105199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:47:32.991150727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:47:32.991167336Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:47:32.991208573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:47:32.991217725Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:47:38.009298175Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:47:38.039097321Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:47:38.039381495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:47:38.060344285Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:47:38.060405111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:47:38.060550893Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:47:38.060563425Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:47:38.060572466Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:47:43.077309519Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:47:43.110715113Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:47:43.110833285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:47:43.135324082Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:47:43.135367363Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:47:43.13538166Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:47:43.135391135Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:47:48.152355395Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:47:48.182178155Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:47:48.182278959Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:47:48.205556416Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:47:48.205615387Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:47:48.205629635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:47:48.205640278Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:47:48.205648772Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:47:53.221326483Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:47:53.248563927Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:47:53.248668802Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:47:53.271942083Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:47:53.271984659Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:47:53.271998569Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:47:53.272009392Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:47:53.27201777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:47:58.286190171Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:47:58.318071364Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:47:58.318185961Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:47:58.34300318Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:47:58.343061516Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:47:58.343075916Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:47:58.343085953Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:47:58.34309438Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:48:03.359098673Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:48:03.390840473Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:48:03.390962487Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:48:03.4146456Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:48:03.414687563Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:48:03.414701906Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:48:03.414714079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:48:03.414723129Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:48:08.432091861Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:48:08.459712381Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:48:08.459807924Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:48:08.484103967Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:48:08.484159023Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:48:08.484174471Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:48:08.484183243Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:48:08.484191621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:48:13.502490314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:48:13.53163897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:48:13.531757305Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:48:13.554220279Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:48:13.554277722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:48:13.554292111Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:48:13.554302769Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:48:13.554311614Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:48:18.575180859Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:48:18.606468108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:48:18.606592938Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:48:18.628592126Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:48:18.62863699Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:48:18.628650365Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:48:18.628662386Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:48:23.646849917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:48:23.676569425Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:48:23.676678978Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:48:23.699537282Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:48:23.699578524Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:48:23.699592563Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:48:23.699602394Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:48:23.699610862Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:48:28.715932591Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:48:28.746639922Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:48:28.746759625Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:48:28.767019578Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:48:28.767062045Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:48:28.767076672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:48:28.767087021Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:48:28.767097791Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:48:33.782661576Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:48:33.811919539Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:48:33.812035737Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:48:33.835915727Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:48:33.835958415Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:48:33.835972825Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:48:33.835982148Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:48:33.835992302Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:48:38.852278325Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:48:38.880727216Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:48:38.88081206Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:48:38.901457071Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:48:38.901504198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:48:38.901518796Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:48:38.901529749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:48:38.90153846Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:48:43.917619914Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:48:43.945959109Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:48:43.946050118Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:48:43.971798839Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:48:43.971857421Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:48:43.971871882Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:48:43.971882255Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:48:43.971890982Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:48:48.993563264Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:48:49.025741865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:48:49.025846223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:48:49.050479512Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:48:49.050524595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:48:49.050539824Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:48:49.050551677Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:48:49.050560966Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:48:54.067814859Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:48:54.098262125Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:48:54.098361994Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:48:54.122159408Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:48:54.122200812Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:48:54.122215117Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:48:54.122226886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:48:54.122247404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:48:59.138283016Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:48:59.16841815Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:48:59.168637442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:48:59.189775071Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:48:59.189829158Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:48:59.189843415Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:48:59.189853021Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:48:59.189861006Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:49:04.209332117Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:49:04.243168659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:49:04.243297451Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:49:04.267903228Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:49:04.267947396Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:49:04.267962378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:49:04.267973541Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:49:04.267982921Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:49:09.286611279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:49:09.318110311Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:49:09.318244797Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:49:09.342518644Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:49:09.342563319Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:49:09.342577851Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:49:09.342587951Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:49:09.342597439Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:49:14.360345873Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:49:14.389937721Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:49:14.390030592Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:49:14.413130986Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:49:14.413180446Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:49:14.413193333Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:49:14.413203144Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:49:14.41321383Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:49:19.428725085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:49:19.456754064Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:49:19.456860143Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:49:19.480640181Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:49:19.480680882Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:49:19.480694321Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:49:19.480705956Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:49:19.480714634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:49:24.497304489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:49:24.527812963Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:49:24.52790725Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:49:24.551434694Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:49:24.551478875Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:49:24.55149466Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:49:24.55150684Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:49:24.551518327Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:49:29.573458106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:49:29.601698974Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:49:29.601805597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:49:29.624183865Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:49:29.624223688Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:49:29.624248709Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:49:29.624258613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:49:29.624267303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:49:34.641461075Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:49:34.670771849Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:49:34.670867742Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:49:34.698531431Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:49:34.698580269Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:49:34.698594654Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:49:34.698605639Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:49:34.698614774Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:49:39.720678966Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:49:39.746026394Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:49:39.746133777Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:49:39.765460612Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:49:39.765503466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:49:39.765516202Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:49:39.76552729Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:49:39.765537019Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:49:44.783163514Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:49:44.813790251Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:49:44.813911353Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:49:44.837737996Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:49:44.837779621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:49:44.837793992Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:49:44.837805273Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:49:44.837814227Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:49:49.856535032Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:49:49.885926134Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:49:49.886028389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:49:49.906570874Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:49:49.906613064Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:49:49.90662667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:49:49.906637918Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:49:49.906647739Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:49:54.922021713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:49:54.950352625Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:49:54.950442871Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:49:54.973939993Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:49:54.97399283Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:49:54.974007871Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:49:54.974018379Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:49:54.974026668Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:49:59.994306396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:50:00.048055346Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:50:00.048194035Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:50:00.079403444Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:50:00.079454223Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:50:00.079469272Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:50:00.079480747Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:50:00.079490405Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:50:05.100279315Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:50:05.13191425Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:50:05.132014996Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:50:05.159649549Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:50:05.159696841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:50:05.159712332Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:50:05.159720195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:50:05.159727115Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:50:10.173088529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:50:10.20417156Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:50:10.204273643Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:50:10.227857816Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:50:10.227900166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:50:10.227913149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:50:10.227924254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:50:10.227934801Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:50:15.245549707Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:50:15.274762881Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:50:15.27486778Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:50:15.298349748Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:50:15.298391729Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:50:15.298405533Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:50:15.298417328Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:50:15.298426512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:50:20.317494201Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:50:20.344987321Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:50:20.345089673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:50:20.367495346Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:50:20.367540238Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:50:20.367554481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:50:20.367566181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:50:20.36757624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:50:25.383212393Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:50:25.416357442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:50:25.416579658Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:50:25.43945459Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:50:25.439498554Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:50:25.439513224Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:50:25.43952537Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:50:25.439535948Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:50:30.460141575Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:50:30.489966329Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:50:30.490057713Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:50:30.511854614Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:50:30.51189418Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:50:30.51190829Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:50:30.511920414Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:50:30.51192992Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:50:35.527469678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:50:35.559944401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:50:35.560052955Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:50:35.585899469Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:50:35.585940222Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:50:35.585953233Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:50:35.585964568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:50:35.585973962Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:50:40.604273334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:50:40.632186915Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:50:40.632288916Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:50:40.654549044Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:50:40.654593377Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:50:40.654605859Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:50:40.654616918Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:50:40.654627767Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:50:45.673206225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:50:45.703095665Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:50:45.703226156Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:50:45.730892297Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:50:45.730954747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:50:45.730969628Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:50:45.730979967Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:50:45.730988515Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:50:50.749458663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:50:50.780801053Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:50:50.780923532Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:50:50.806380392Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:50:50.806424983Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:50:50.806439898Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:50:50.806450929Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:50:50.806460607Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:50:55.828742387Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:50:55.858842341Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:50:55.858967866Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:50:55.883087394Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:50:55.883138849Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:50:55.883154615Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:50:55.883205899Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:50:55.883215297Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:51:00.901409772Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:51:00.9305447Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:51:00.93063782Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:51:00.950745734Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:51:00.950790802Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:51:00.950806055Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:51:00.950817623Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:51:00.950827076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:51:05.966962036Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:51:05.998459036Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:51:05.998552439Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:51:06.023344636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:51:06.023396902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:51:06.02341231Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:51:06.023423495Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:51:06.023434598Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:51:11.044148798Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:51:11.072792157Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:51:11.072922917Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:51:11.095194477Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:51:11.095261056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:51:11.09527642Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:51:11.095285979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:51:11.095294688Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:51:16.115671396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:51:16.144392696Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:51:16.14465691Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:51:16.16936469Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:51:16.169415412Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:51:16.169429753Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:51:16.169460346Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:51:16.16947023Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:51:21.188526028Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:51:21.218421621Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:51:21.218533409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:51:21.241763804Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:51:21.241821041Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:51:21.241835588Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:51:21.241845248Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:51:21.24185352Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:51:26.258529043Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:51:26.286788017Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:51:26.286902594Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:51:26.312277896Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:51:26.312328135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:51:26.312341978Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:51:26.31235274Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:51:26.312361218Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:51:31.331936646Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:51:31.3619344Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:51:31.362048036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:51:31.384839566Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:51:31.384884761Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:51:31.384900079Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:51:31.384941756Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:51:31.38495088Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:51:36.404281214Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:51:36.432326971Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:51:36.432516072Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:51:36.458640863Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:51:36.458684427Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:51:36.458697845Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:51:36.458708342Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:51:36.458728844Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:51:41.477134246Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:51:41.505621308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:51:41.505745831Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:51:41.529013916Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:51:41.529055423Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:51:41.529068139Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:51:41.529080217Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:51:41.529089717Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:51:46.546605694Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:51:46.57793532Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:51:46.578046279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:51:46.603756248Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:51:46.603799033Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:51:46.60381373Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:51:46.603826148Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:51:46.603835944Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:51:51.625715929Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:51:51.652773901Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:51:51.652861589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:51:51.678204696Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:51:51.678259084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:51:51.678273108Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:51:51.678283365Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:51:51.678293236Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:51:56.699288386Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:51:56.729230502Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:51:56.729338709Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:51:56.75317551Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:51:56.753214709Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:51:56.753228684Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:51:56.753283231Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:51:56.753293639Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:52:01.773302489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:52:01.804037263Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:52:01.804150664Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:52:01.826154545Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:52:01.826207885Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:52:01.826222261Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:52:01.826246399Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:52:01.826255931Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:52:06.845496242Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:52:06.874002414Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:52:06.874112729Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:52:06.895198515Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:52:06.89525444Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:52:06.895269436Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:52:11.913323137Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:52:11.940364106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:52:11.940612759Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:52:11.963383943Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:52:11.963431525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:52:11.963446365Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:52:11.96345714Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:52:16.98138226Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:52:17.013621772Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:52:17.013715186Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:52:17.040566718Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:52:17.040610372Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:52:17.040624245Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:52:17.040636457Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:52:17.040646401Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:52:22.061296745Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:52:22.090031196Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:52:22.090177215Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:52:22.112065294Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:52:22.112129271Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:52:22.112174215Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:52:22.112202467Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:52:22.112213638Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:52:27.128860549Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:52:27.1609737Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:52:27.161065136Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:52:27.188306966Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:52:27.188349719Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:52:27.188512865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:52:27.188526768Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:52:27.188536194Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:52:32.205334084Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:52:32.235516285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:52:32.2356316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:52:32.258452992Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:52:32.258507466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:52:32.258521383Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:52:32.25853106Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:52:32.258539896Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:52:37.274347355Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:52:37.302878938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:52:37.303006702Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:52:37.323337719Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:52:37.323403843Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:52:37.323418371Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:52:37.323429121Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:52:37.323437252Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:52:42.339256659Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:52:42.369929216Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:52:42.370055613Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:52:42.395031901Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:52:42.39507326Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:52:42.395086515Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:52:42.39509859Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:52:42.395108276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:52:47.41329072Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:52:47.44233202Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:52:47.442427277Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:52:47.465784818Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:52:47.465828179Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:52:47.465842345Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:52:47.465854499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:52:47.465874235Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:52:52.481486035Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:52:52.510772325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:52:52.510885713Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:52:52.534784832Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:52:52.534842163Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:52:52.534856678Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:52:52.534867146Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:52:52.534875915Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:52:57.549959197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:52:57.58061891Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:52:57.580728246Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:52:57.602062758Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:52:57.602125382Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:52:57.602139714Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:52:57.602150014Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:52:57.602158215Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:53:02.622025543Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:53:02.65091163Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:53:02.651028162Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:53:02.674339961Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:53:02.674381308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:53:02.674394637Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:53:02.674405898Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:53:07.690300026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:53:07.720275099Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:53:07.720378666Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:53:07.745640963Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:53:07.745682206Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:53:07.74572098Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:53:07.745731343Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:53:07.74575324Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:53:12.766836702Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:53:12.797038619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:53:12.797169381Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:53:12.819026621Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:53:12.819069872Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:53:12.819083749Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:53:12.819096687Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:53:12.819106524Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:53:17.841285669Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:53:17.870189713Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:53:17.870319527Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:53:17.893806652Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:53:17.893854211Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:53:17.893870136Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:53:17.89388065Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:53:17.893890816Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:53:22.915246945Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:53:22.9449405Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:53:22.94504058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:53:22.968390262Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:53:27.983677925Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:53:28.013875151Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:53:28.013989494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:53:28.042397697Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:53:28.042445068Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:53:28.042460375Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:53:28.042471705Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:53:28.042481114Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:53:33.05971295Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:53:33.091580763Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:53:33.092133889Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:53:33.11420897Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:53:33.114263652Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:53:33.114279464Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:53:33.114288677Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:53:33.114297508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:53:38.130201879Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:53:38.160397595Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:53:38.160568703Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:53:38.185349483Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:53:38.185394211Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:53:38.185407515Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:53:38.185416746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:53:38.185426613Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:53:43.200873257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:53:43.231400106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:53:43.231512799Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:53:43.25126748Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:53:43.251308512Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:53:43.251324144Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:53:43.25133562Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:53:43.251344864Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:53:48.272185215Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:53:48.302780983Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:53:48.302875164Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:53:48.330215396Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:53:48.330270988Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:53:48.330285228Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:53:48.330295597Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:53:48.330303806Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:53:53.346329517Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:53:53.373252985Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:53:53.373366489Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:53:53.398034365Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:53:53.398089556Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:53:53.398103627Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:53:53.39811422Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:53:53.39812289Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:53:58.41219969Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:53:58.441934984Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:53:58.44203471Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:53:58.466832278Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:53:58.466897193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:53:58.466912127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:53:58.466921627Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:53:58.466930072Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:54:03.482303971Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:54:03.511579563Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:54:03.51170111Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:54:03.532248295Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:54:03.532300822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:54:03.532315763Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:54:03.53233635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:54:03.532344654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:54:08.548221779Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:54:08.579688324Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:54:08.579795395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:54:08.60095943Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:54:08.601014648Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:54:08.601029929Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:54:08.601151983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:54:08.601166021Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:54:13.618129754Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:54:13.647670405Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:54:13.647780997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:54:13.67152133Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:54:13.671563151Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:54:13.671577016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:54:13.671586635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:54:13.671595581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:54:18.689039141Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:54:18.720187155Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:54:18.720293002Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:54:18.745519418Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:54:18.745905121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:54:18.745927084Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:54:18.74597248Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:54:18.745984115Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:54:23.764617686Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:54:23.792494151Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:54:23.792607689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:54:23.817743554Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:54:23.817802189Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:54:23.817818198Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:54:23.817828531Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:54:23.817837335Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:54:28.837372663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:54:28.866620743Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:54:28.866731493Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:54:28.887993629Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:54:28.888036402Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:54:28.888049955Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:54:28.888061085Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:54:28.888070653Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:54:33.902096384Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:54:33.931243531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:54:33.931356085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:54:33.952002275Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:54:33.952045139Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:54:33.952060094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:54:33.952071307Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:54:38.971755663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:54:39.004358818Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:54:39.004560614Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:54:39.027367105Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:54:39.02742735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:54:39.027444694Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:54:39.027456079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:54:39.027465088Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:54:44.043695296Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:54:44.076207278Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:54:44.076339783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:54:44.097824671Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:54:44.097864298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:54:44.097877355Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:54:44.097888083Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:54:44.097898148Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:54:49.116919328Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:54:49.147365475Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:54:49.147476856Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:54:49.174005303Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:54:49.174056202Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:54:49.174073151Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:54:54.189282827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:54:54.217903443Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:54:54.218014865Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:54:54.241718013Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:54:54.241760927Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:54:54.241774002Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:54:54.241785039Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:54:54.241794331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:54:59.259284993Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:54:59.286829533Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:54:59.28694383Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:54:59.311992061Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:54:59.312032309Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:54:59.312070348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:54:59.312096289Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:54:59.312104967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:55:04.327862205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:55:04.357923842Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:55:04.358048028Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:55:04.381976708Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:55:04.382035056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:55:04.382049781Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:55:04.3820597Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:55:04.382068268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:55:09.399856911Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:55:09.430218068Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:55:09.430352503Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:55:09.452946239Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:55:09.45300767Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:55:09.453023473Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:55:09.453033898Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:55:09.45304255Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:55:14.470299089Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:55:14.499005764Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:55:14.499116831Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:55:14.52433933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:55:14.524383097Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:55:14.524513884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:55:14.524528161Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:55:14.52453916Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:55:19.544848488Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:55:19.574826305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:55:19.574927077Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:55:19.599601089Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:55:19.599641943Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:55:19.599678384Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:55:19.599688728Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:55:19.599698497Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:55:24.615604505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:55:24.644970016Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:55:24.645087725Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:55:24.66991579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:55:24.66998116Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:55:24.670019425Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:55:24.67006032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:55:24.670069909Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:55:29.688273193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:55:29.717573593Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:55:29.717662235Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:55:29.742693855Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:55:29.742740765Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:55:29.742755405Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:55:29.742765479Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:55:29.742773965Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:55:34.760483807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:55:34.789270782Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:55:34.789358871Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:55:34.81044077Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:55:34.810485083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:55:34.810498818Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:55:34.81051134Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:55:34.810520707Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:55:39.829279991Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:55:39.859148475Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:55:39.859304601Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:55:39.883405195Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:55:39.883450363Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:55:39.883464244Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:55:39.883477247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:55:39.883486299Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:55:44.901986199Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:55:44.932433723Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:55:44.932634597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:55:44.95778267Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:55:44.957822207Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:55:44.957836178Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:55:44.957846984Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:55:44.95785594Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:55:49.977299011Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:55:50.006335838Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:55:50.00647117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:55:50.031911835Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:55:50.031958277Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:55:50.031971662Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:55:50.031981488Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:55:50.03199017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:55:55.048268241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:55:55.076904979Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:55:55.07702462Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:55:55.101570126Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:55:55.101613955Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:55:55.101627744Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:55:55.10164018Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:55:55.101650764Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:56:00.134639384Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:56:00.165853958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:56:00.165966683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:56:00.192122339Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:56:00.192169477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:56:00.192204155Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:56:00.192216779Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:56:00.192227927Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:56:05.211305594Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:56:05.24273183Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:56:05.242833943Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:56:05.266678406Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:56:05.266720494Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:56:05.266752261Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:56:05.266761902Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:56:05.266770268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:56:10.286825066Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:56:10.314873065Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:56:10.314985901Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:56:10.338558491Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:56:10.338604735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:56:10.338621318Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:56:10.33863044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:56:10.338637565Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:56:15.356033777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:56:15.383744601Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:56:15.383851432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:56:15.408659193Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:56:15.408701176Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:56:15.408715331Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:56:15.408742156Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:56:15.408751498Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:56:20.422226202Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:56:20.451988738Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:56:20.452099415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:56:20.472575877Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:56:20.472991029Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:56:20.47318103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:56:20.4733477Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:56:20.473348782Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T22:56:20.473363676Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:56:25.48834628Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:56:25.517395372Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:56:25.517515561Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:56:25.539140706Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:56:25.539186111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:56:25.539200076Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:56:30.558854429Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:56:30.590183725Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:56:30.590291106Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:56:30.615475197Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:56:30.615516623Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:56:30.615529748Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:56:30.615539504Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:56:30.615549547Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:56:35.631460029Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:56:35.659788769Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:56:35.659885665Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:56:35.680050128Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:56:35.68009478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:56:35.680128523Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:56:35.680139226Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:56:35.680147749Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:56:40.69827559Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:56:40.72687646Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:56:40.726968275Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:56:40.752018761Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:56:40.752061505Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:56:40.752075381Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:56:40.752085019Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:56:40.752092894Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:56:45.771117884Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:56:45.800100978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:56:45.80020049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:56:45.82157837Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:56:45.821646184Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:56:45.821660286Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:56:45.821671336Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:56:45.821679561Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:56:50.840099931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:56:50.872564751Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:56:50.8726502Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:56:50.896791424Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:56:50.896834844Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:56:50.896873864Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:56:50.896886093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:56:50.896897006Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:56:55.919599474Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:56:55.947333018Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:56:55.947435551Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:56:55.971124677Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:56:55.971170833Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:56:55.971185031Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:56:55.971195944Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:56:55.971205277Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:57:00.990976529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:57:01.018897119Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:57:01.01902068Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:57:01.044362293Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:57:01.044552183Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:57:01.044574728Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:57:01.044586347Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:57:01.044594461Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:57:06.063302651Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:57:06.092932467Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:57:06.093045854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:57:06.115389987Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:57:06.115434619Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:57:06.115449356Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:57:06.115460052Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:57:06.115469386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:57:11.135750155Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:57:11.164892427Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:57:11.164994484Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:57:11.189523813Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:57:11.189578462Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:57:11.189593004Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:57:11.189602722Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:57:11.189612586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:57:16.209285241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:57:16.238219821Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:57:16.238327206Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:57:16.262476592Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:57:16.262517499Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:57:16.262530763Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:57:16.262541611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:57:16.262551363Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:57:21.279222124Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:57:21.308950655Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:57:21.30906684Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:57:21.335445592Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:57:21.335487897Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:57:21.335501256Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:57:21.335512756Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:57:21.335522608Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:57:26.354055746Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:57:26.384632165Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:57:26.384744368Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:57:26.407493174Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:57:26.407534034Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:57:26.407547161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:57:31.427898621Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:57:31.457423935Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:57:31.45756184Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:57:31.482654622Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:57:31.482696244Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:57:31.48271216Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:57:31.482722374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:57:31.482731541Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:57:36.49928319Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:57:36.527682451Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:57:36.52777084Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:57:36.549801341Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:57:36.549844148Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:57:36.549857251Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:57:36.549867982Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:57:36.549877259Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:57:41.565168996Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:57:41.595463371Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:57:41.595581114Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:57:41.622942542Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:57:41.623362064Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:57:41.623384872Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:57:41.623398352Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:57:41.623409762Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:57:46.641459886Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:57:46.674341822Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:57:46.674434953Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:57:46.700156119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:57:46.70019999Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:57:46.700216195Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:57:46.70022612Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:57:46.700247238Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:57:51.720533582Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:57:51.751709986Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:57:51.751805297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:57:51.775989835Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:57:51.776031617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:57:51.77604538Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:57:51.776056757Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:57:51.776066373Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:57:56.795684803Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:57:56.822552422Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:57:56.82267126Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:57:56.846044318Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:57:56.846086494Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:57:56.84610162Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:57:56.846125991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:57:56.846135634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:58:01.86499037Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:58:01.893627682Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:58:01.893748226Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:58:01.918620377Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:58:01.918678159Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:58:01.918693054Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:58:01.918701712Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:58:01.918709107Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:58:06.935293468Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:58:06.96617388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:58:06.966284525Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:58:06.991573214Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:58:06.991618492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:58:06.991632501Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:58:06.991652506Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:58:06.991661914Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:58:12.006828341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:58:12.036033538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:58:12.036140116Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:58:12.062019052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:58:12.062064936Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:58:12.062080999Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:58:12.062092001Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:58:12.062103218Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:58:17.07809507Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:58:17.107674463Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:58:17.107762338Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:58:17.128316396Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:58:17.128861888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:58:17.129091299Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:58:17.129344707Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:58:17.129401685Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T22:58:17.12958911Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:58:22.148643571Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:58:22.179757171Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:58:22.179878904Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:58:22.202466212Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:58:22.202512371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:58:22.202527467Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:58:22.202563056Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:58:22.202572893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:58:27.217654021Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:58:27.248084611Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:58:27.248173458Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:58:27.26966803Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:58:27.269727424Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:58:27.269741814Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:58:27.269751867Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:58:27.269760025Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:58:32.289280316Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:58:32.31700978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:58:32.317094266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:58:32.342396962Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:58:32.342457156Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:58:32.342472505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:58:32.342483053Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:58:32.342492009Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:58:37.358805391Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:58:37.39081281Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:58:37.390918562Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:58:37.416995019Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:58:37.41704228Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:58:37.417058507Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:58:37.417096222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:58:37.417106141Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:58:42.439284875Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:58:42.470593301Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:58:42.47070983Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:58:42.493398608Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:58:42.493442019Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:58:42.493455983Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:58:42.493468134Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:58:42.493479154Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:58:47.50903919Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:58:47.540894538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:58:47.541033115Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:58:47.563873447Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:58:47.563916943Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:58:47.563931218Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:58:47.563942037Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:58:47.563952117Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:58:52.580538808Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:58:52.612570677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:58:52.612665644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:58:52.63505Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:58:52.635093483Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:58:52.635108149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:58:52.635120131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:58:52.635129761Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:58:57.652810272Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:58:57.680734788Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:58:57.68084073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:58:57.702106148Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:58:57.702147788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:58:57.702185858Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:58:57.702197236Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:58:57.702205505Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:59:02.723033869Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:59:02.754652467Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:59:02.754771499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:59:02.778611644Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:59:02.778678195Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:59:02.77869356Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:59:02.778704432Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:59:02.778712754Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:59:07.795212731Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:59:07.824998947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:59:07.82512895Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:59:07.846259587Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:59:07.846315838Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:59:12.862279819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:59:12.890744744Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:59:12.890834742Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:59:12.912116601Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:59:12.912159072Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:59:12.912172643Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:59:12.912184373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:59:12.912194564Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:59:17.93464854Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:59:17.964809166Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:59:17.964904579Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:59:17.989046585Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:59:23.008001349Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:59:23.039451033Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:59:23.039585008Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:59:23.062864214Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:59:23.062905237Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:59:23.06291866Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:59:23.062930807Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:59:23.062940566Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:59:28.077449808Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:59:28.106836063Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:59:28.106946169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:59:28.130846555Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:59:28.130893007Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:59:28.130907131Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:59:28.13091728Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:59:28.130924586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:59:33.146346924Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:59:33.175764118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:59:33.175883878Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:59:33.200931579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:59:33.200974995Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:59:33.200989606Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:59:33.20100136Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:59:33.201011142Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:59:38.216635416Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:59:38.246963993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:59:38.247071883Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:59:38.268869506Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:59:38.268910607Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:59:38.268925295Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:59:38.268937005Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:59:43.286100607Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:59:43.316270883Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:59:43.31638454Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:59:43.341035757Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:59:43.341092951Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:59:43.341107584Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:59:43.341117473Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:59:43.341126123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:59:48.362218455Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:59:48.393927913Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:59:48.394011887Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:59:48.419063136Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:59:48.419106249Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:59:48.41916088Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:59:48.419172755Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:59:48.419181258Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:59:53.434925528Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:59:53.465128146Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:59:53.465222378Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:59:53.490029228Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:59:53.49007349Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:59:53.490088377Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:59:53.490098627Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:59:53.490106869Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T22:59:58.508281562Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T22:59:58.538536048Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T22:59:58.538632259Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T22:59:58.562059523Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T22:59:58.562106345Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T22:59:58.56211969Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T22:59:58.562151612Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T22:59:58.562161023Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:00:03.595095517Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:00:03.697031234Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:00:03.697177948Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:00:03.745300121Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:00:03.745341575Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:00:03.745356114Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:00:03.745403223Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:00:03.745412938Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:00:08.775291148Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:00:08.80514773Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:00:08.805284184Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:00:08.826434Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:00:08.826479423Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:00:08.82649368Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:00:08.826504053Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:00:08.826514658Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:00:13.843864281Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:00:13.874659293Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:00:13.874765828Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:00:13.899099223Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:00:13.899166533Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:00:13.899181319Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:00:13.899191958Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:00:13.899200601Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:00:18.916348269Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:00:18.946364006Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:00:18.94647298Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:00:18.972133249Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:00:18.972175764Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:00:18.972188951Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:00:18.972199969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:00:18.972208489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:00:23.987368826Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:00:24.017201563Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:00:24.017340453Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:00:24.039075713Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:00:24.03912101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:00:24.039134722Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:00:24.039147775Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:00:24.039159439Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:00:29.056299484Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:00:29.087400576Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:00:29.087506215Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:00:29.112971557Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:00:29.113027063Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:00:29.113041147Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:00:29.113052511Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:00:29.113061157Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:00:34.128475532Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:00:34.158063701Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:00:34.158187354Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:00:34.183038904Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:00:34.183079027Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:00:34.183092384Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:00:34.183112738Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:00:34.183121565Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:00:39.200978679Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:00:39.233050106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:00:39.233156186Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:00:39.258323672Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:00:39.258370814Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:00:39.258385725Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:00:39.258408788Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:00:39.258418402Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:00:44.272549936Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:00:44.301401426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:00:44.301493475Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:00:44.322934457Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:00:44.322978Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:00:44.322991668Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:00:44.323003138Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:00:44.323013424Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:00:49.343328787Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:00:49.372108155Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:00:49.372224249Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:00:49.39512941Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:00:49.39516922Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:00:49.395183516Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:00:49.395193826Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:00:49.395203697Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:00:54.410429768Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:00:54.438908689Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:00:54.439031822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:00:54.461191526Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:00:54.461255706Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:00:54.461270481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:00:54.461280376Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:00:54.461288767Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:00:59.477890379Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:00:59.508129621Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:00:59.50833822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:00:59.53114245Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:00:59.531192764Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:00:59.53120758Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:00:59.53121848Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:00:59.53122669Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:01:04.550005915Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:01:04.578406457Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:01:04.578505032Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:01:04.598793546Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:01:04.598836706Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:01:04.598852399Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:01:04.598874891Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:01:04.598883178Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:01:09.616877715Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:01:09.644621012Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:01:09.644712376Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:01:09.671967325Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:01:09.672011968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:01:09.672026277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:01:14.688685154Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:01:14.718034659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:01:14.718136424Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:01:14.739588291Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:01:14.739634582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:01:19.759804735Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:01:19.790625416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:01:19.790733454Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:01:19.819709072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:01:19.81975155Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:01:19.81976573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:01:19.819775463Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:01:19.819784283Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:01:24.837273982Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:01:24.866719357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:01:24.866813376Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:01:24.88996072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:01:24.890010534Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:01:24.890025891Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:01:24.89003627Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:01:24.890047299Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:01:29.904318891Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:01:29.933525274Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:01:29.933643491Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:01:29.956371782Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:01:29.956546096Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:01:29.956565402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:01:29.956575717Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:01:29.956594633Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:01:34.97437461Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:01:35.007023059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:01:35.007136208Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:01:35.028659923Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:01:35.028706877Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:01:35.028721931Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:01:35.028734265Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:01:35.028743687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:01:40.050307893Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:01:40.080764102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:01:40.080867541Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:01:40.103665578Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:01:40.103710664Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:01:40.103725913Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:01:40.103735584Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:01:40.103743874Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:01:45.122290813Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:01:45.150841959Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:01:45.150962697Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:01:45.17188486Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:01:45.171926005Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:01:45.171939601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:01:45.171949765Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:01:45.171960001Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:01:50.188295954Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:01:50.217530897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:01:50.217640309Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:01:50.243321218Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:01:50.243390968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:01:50.243404913Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:01:50.2434149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:01:50.243423506Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:01:55.259302206Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:01:55.291092805Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:01:55.291227032Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:01:55.31655946Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:01:55.316608457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:01:55.316624933Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:01:55.316636722Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:01:55.316648076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:02:00.330517181Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:02:00.361328915Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:02:00.361448513Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:02:00.383265196Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:02:00.383313138Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:02:00.383327977Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:02:00.383338291Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:02:00.383348481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:02:05.398324774Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:02:05.440210902Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:02:05.440327881Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:02:05.464951388Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:02:05.465007447Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:02:05.465023188Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:02:05.465033887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:02:05.465042296Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:02:10.480538676Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:02:10.510343762Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:02:10.510451181Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:02:10.53012092Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:02:10.530184379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:02:10.530199456Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:02:10.530210802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:02:10.530220658Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:02:15.548292582Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:02:15.576742913Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:02:15.576853424Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:02:15.597871996Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:02:15.597915608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:02:15.597929672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:02:15.597940243Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:02:15.597950464Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:02:20.61647084Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:02:20.645559086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:02:20.645651282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:02:20.668346283Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:02:20.668392427Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:02:20.668469563Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:02:20.668542107Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:02:20.668551594Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:02:25.686294047Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:02:25.714254139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:02:25.714353317Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:02:25.735032441Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:02:25.735075971Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:02:25.735089608Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:02:25.73510091Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:02:25.735111123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:02:30.7523045Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:02:30.781739599Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:02:30.781852417Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:02:30.802985042Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:02:30.803026015Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:02:30.803062939Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:02:30.803083948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:02:30.803092628Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:02:35.821472371Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:02:35.85110158Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:02:35.851216708Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:02:35.873542777Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:02:35.873600785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:02:35.873616118Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:02:35.873625864Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:02:35.873634893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:02:40.898809253Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:02:40.928469379Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:02:40.928598174Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:02:40.953218879Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:02:40.953283013Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:02:40.953297125Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:02:40.953307531Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:02:40.953316546Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:02:45.968095003Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:02:45.999507829Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:02:46.000043849Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:02:46.024002197Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:02:46.024046582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:02:46.024060388Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:02:46.024084051Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:02:46.02409311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:02:51.045565335Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:02:51.077387832Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:02:51.077476784Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:02:51.102621041Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:02:51.102664013Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:02:51.102677853Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:02:51.102689001Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:02:51.10269914Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:02:56.119084043Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:02:56.150792332Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:02:56.150884767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:02:56.173511938Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:02:56.173555454Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:02:56.173569652Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:02:56.17358066Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:02:56.173590416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:03:01.192071959Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:03:01.225592945Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:03:01.225701808Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:03:01.249321356Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:03:01.249364878Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:03:01.249378503Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:03:01.24938891Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:03:01.249397778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:03:06.266483499Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:03:06.297752498Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:03:06.297871075Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:03:06.320949159Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:03:06.320992409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:03:06.321018189Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:03:06.321030128Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:03:06.321038991Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:03:11.334528783Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:03:11.362737212Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:03:11.362895379Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:03:11.38682072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:03:11.386874275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:03:11.386888205Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:03:11.386899641Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:03:11.386907858Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:03:16.405345705Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:03:16.43478147Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:03:16.43488882Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:03:16.458859046Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:03:16.458897891Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:03:16.458913065Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:03:16.458922762Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:03:16.458932003Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:03:21.4802833Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:03:21.509438473Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:03:21.509546271Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:03:21.5331287Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:03:21.533169194Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:03:21.533182712Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:03:21.533220789Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:03:21.533230894Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:03:26.553097181Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:03:26.581174803Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:03:26.581301644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:03:26.604125402Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:03:26.604173529Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:03:26.604189497Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:03:26.604201228Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:03:26.604210223Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:03:31.621537277Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:03:31.650947367Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:03:31.651063227Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:03:31.675758765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:03:31.675802177Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:03:31.67581593Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:03:31.675825759Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:03:31.675836383Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:03:36.69127881Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:03:36.721697798Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:03:36.721808062Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:03:36.741438579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:03:36.741495874Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:03:36.741510763Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:03:36.741520527Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:03:36.74152882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:03:41.762361619Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:03:41.790871541Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:03:41.790966058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:03:41.811301527Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:03:41.811343976Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:03:41.811358123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:03:41.811393046Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:03:41.811402452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:03:46.830312459Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:03:46.861551713Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:03:46.861673026Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:03:46.883608882Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:03:46.883666692Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:03:46.883681481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:03:46.883691769Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:03:46.883700104Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:03:51.90228667Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:03:51.935102813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:03:51.93521934Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:03:51.961753215Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:03:51.961800111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:03:51.961816241Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:03:51.961826524Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:03:51.961833802Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:03:56.978760335Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:03:57.00761541Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:03:57.007749229Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:03:57.032343031Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:03:57.032387563Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:03:57.032401234Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:03:57.032486987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:03:57.03249888Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:04:02.087047813Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:04:02.141120594Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:04:02.14128415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:04:02.17099222Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:04:02.171034254Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:04:02.171048924Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:04:02.171061679Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:04:02.171071002Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:04:07.186232049Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:04:07.218577008Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:04:07.218667614Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:04:07.24156886Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:04:07.241626797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:04:07.241640488Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:04:07.2416507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:04:07.24166102Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:04:12.262737079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:04:12.291043472Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:04:12.291135322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:04:12.311310489Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:04:12.311352885Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:04:12.311365737Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:04:12.311376802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:04:12.311386567Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:04:17.329006008Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:04:17.356953169Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:04:17.35705646Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:04:17.378094034Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:04:17.378155145Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:04:17.378170683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:04:17.378182774Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:04:17.378191344Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:04:22.397292875Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:04:22.424908766Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:04:22.425013733Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:04:22.44784586Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:04:22.447890703Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:04:22.447905751Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:04:22.447954279Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:04:22.447964093Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:04:27.466563658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:04:27.496061639Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:04:27.496151507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:04:27.519584183Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:04:27.519630808Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:04:27.519644956Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:04:27.519657562Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:04:27.519667353Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:04:32.539178293Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:04:32.5681114Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:04:32.568200783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:04:32.595813139Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:04:32.595870493Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:04:32.595886098Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:04:32.595896712Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:04:32.595904909Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:04:37.614322771Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:04:37.642343252Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:04:37.642454321Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:04:37.665869992Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:04:37.665913112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:04:37.665926923Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:04:42.684215301Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:04:42.714198119Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:04:42.714305228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:04:42.734374709Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:04:42.734417148Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:04:42.734432534Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:04:42.734444052Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:04:42.734453319Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:04:47.75353923Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:04:47.786163638Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:04:47.786304978Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:04:47.812312502Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:04:47.81236003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:04:47.812374911Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:04:47.812385103Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:04:47.812396139Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:04:52.834126959Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:04:52.863597895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:04:52.863687379Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:04:52.888700132Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:04:52.888741918Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:04:52.888773973Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:04:52.8887843Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:04:52.888793158Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:04:57.905292305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:04:57.935264816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:04:57.935363034Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:04:57.958091399Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:04:57.958147313Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:04:57.958162366Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:04:57.958172145Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:04:57.958180349Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:05:02.979553453Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:05:03.013542792Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:05:03.013661916Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:05:03.038763781Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:05:03.038811608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:05:03.038826493Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:05:03.038837544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:05:03.038848263Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:05:08.059217973Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:05:08.091121495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:05:08.091273325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:05:08.111563476Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:05:08.111617177Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:05:08.11163257Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:05:08.111643906Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:05:08.111653Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:05:13.12930095Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:05:13.157676106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:05:13.157777782Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:05:13.18242046Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:05:13.182463953Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:05:13.182478277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:05:13.182489357Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:05:13.182497768Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:05:18.202055026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:05:18.231194144Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:05:18.231302691Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:05:18.254419244Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:05:18.254463757Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:05:18.254477884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:05:18.254489743Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:05:18.254499882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:05:23.270645841Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:05:23.299679098Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:05:23.299785064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:05:23.323470438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:05:23.323516526Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:05:23.323530079Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:05:23.323542397Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:05:23.323550834Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:05:28.343582425Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:05:28.373003748Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:05:28.373127287Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:05:28.397472556Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:05:28.397514227Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:05:28.397528285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:05:28.397541586Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:05:28.397551439Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:05:33.412908919Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:05:33.444062007Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:05:33.444179658Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:05:33.46688055Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:05:33.466923165Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:05:33.466937007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:05:33.466948131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:05:33.466958032Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:05:38.486559973Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:05:38.515936397Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:05:38.516115683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:05:38.539746537Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:05:38.539787672Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:05:38.539801172Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:05:38.539812126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:05:38.539822398Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:05:43.55326967Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:05:43.584398155Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:05:43.584641395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:05:43.606899938Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:05:43.606953278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:05:43.606969889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:05:43.606980522Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:05:43.606989097Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:05:48.624771675Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:05:48.656700524Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:05:48.656807346Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:05:48.678431567Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:05:48.678478074Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:05:48.678491911Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:05:48.678502318Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:05:48.678512073Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:05:53.696052106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:05:53.725552353Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:05:53.725644406Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:05:53.746446433Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:05:53.746492723Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:05:53.746508809Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:05:53.74655865Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:05:53.746568475Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:05:58.763202062Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:05:58.792265233Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:05:58.792377126Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:05:58.815379332Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:05:58.815421615Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:05:58.815435343Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:05:58.815446597Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:05:58.815455921Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:06:03.83273698Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:06:03.865680355Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:06:03.865793772Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:06:03.891108202Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:06:03.891149678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:06:03.891164149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:06:03.891175861Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:06:03.891185836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:06:08.908815232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:06:08.938827291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:06:08.938928458Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:06:08.958483737Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:06:08.958542133Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:06:08.958556637Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:06:08.958566609Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:06:08.958574802Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:06:13.973952313Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:06:14.002642683Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:06:14.002771937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:06:14.027305782Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:06:14.027350324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:06:14.027364358Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:06:14.027375586Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:06:14.027385888Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:06:19.04510184Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:06:19.076818358Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:06:19.076931846Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:06:19.100998699Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:06:19.101044833Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:06:19.1010591Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:06:19.101069273Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:06:19.101079605Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:06:24.118224878Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:06:24.146419884Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:06:24.146534688Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:06:24.166366184Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:06:24.166406286Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:06:24.166436435Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:06:24.16644724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:06:24.16645601Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:06:29.182694718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:06:29.210740244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:06:29.210832159Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:06:29.234220555Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:06:29.234278198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:06:29.234293834Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:06:29.234305684Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:06:29.234315Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:06:34.250785232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:06:34.28259509Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:06:34.282688877Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:06:34.306417696Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:06:34.30645905Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:06:34.306472653Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:06:34.306484723Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:06:34.306494005Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:06:39.323461334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:06:39.354374385Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:06:39.354482876Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:06:39.37710199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:06:39.377161845Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:06:39.377190497Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:06:39.37720054Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:06:39.377218937Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:06:44.394834686Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:06:44.425410966Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:06:44.425503345Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:06:44.451106208Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:06:44.45115335Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:06:44.45116807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:06:44.451178088Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:06:44.451188696Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:06:49.471730346Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:06:49.500253586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:06:49.500360266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:06:49.519943484Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:06:49.519996281Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:06:54.53314769Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:06:54.56153878Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:06:54.561636077Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:06:54.586072467Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:06:54.586113298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:06:54.586126542Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:06:54.586136965Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:06:54.586146006Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:06:59.606127104Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:06:59.636120084Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:06:59.63628879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:06:59.654924074Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:06:59.654965638Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:06:59.654978728Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:06:59.65498962Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:06:59.655000648Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:07:04.670480587Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:07:04.700058019Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:07:04.700181043Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:07:04.723614251Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:07:04.723655455Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:07:04.723669005Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:07:04.723680758Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:07:04.723690244Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:07:09.743301946Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:07:09.771900721Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:07:09.772011968Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:07:09.792082774Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:07:09.792126664Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:07:09.792140266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:07:09.792152687Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:07:09.79216282Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:07:14.810835688Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:07:14.841176738Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:07:14.841318643Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:07:14.865431478Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:07:14.865471686Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:07:14.865488098Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:07:14.865511237Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:07:14.865520279Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:07:19.880054438Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:07:19.911738886Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:07:19.911860058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:07:19.932033367Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:07:19.932079094Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:07:19.932092858Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:07:19.932102171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:07:19.932113239Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:07:24.951275519Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:07:24.981509095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:07:24.981607175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:07:25.008051696Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:07:25.008631469Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:07:25.008893789Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:07:25.009170999Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:07:25.009186763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:07:30.033407365Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:07:30.06587491Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:07:30.065996557Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:07:30.091498341Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:07:30.091541379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:07:30.091555033Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:07:30.091566725Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:07:30.09157627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:07:35.104087374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:07:35.135404619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:07:35.135509676Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:07:35.15864819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:07:35.158688676Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:07:35.158720174Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:07:35.158731604Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:07:35.158740011Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:07:40.179732545Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:07:40.208780537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:07:40.208893452Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:07:40.234179657Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:07:40.234218907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:07:40.234269912Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:07:40.234293518Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:07:40.234302431Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:07:45.250950509Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:07:45.279398907Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:07:45.279511761Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:07:45.303593842Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:07:45.30363385Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:07:45.303647508Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:07:45.303659157Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:07:45.303668548Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:07:50.325452161Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:07:50.354515244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:07:50.354613578Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:07:50.377741492Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:07:50.377805102Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:07:50.377820095Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:07:50.377830315Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:07:50.377838455Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:07:55.391544118Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:07:55.421352167Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:07:55.421442194Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:07:55.447171992Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:07:55.447216861Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:07:55.447230998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:07:55.447255384Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:07:55.447264488Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:08:00.464038603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:08:00.491332789Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:08:00.491446867Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:08:00.519163499Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:08:00.519204497Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:08:00.519218494Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:08:00.519255692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:08:00.519265142Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:08:05.536964276Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:08:05.566042711Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:08:05.566151276Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:08:05.589463283Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:08:05.589504777Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:08:05.589519227Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:08:05.589530248Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:08:05.589538701Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:08:10.611327311Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:08:10.641455891Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:08:10.641569337Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:08:10.667056079Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:08:10.667111161Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:08:15.686285959Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:08:15.713870936Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:08:15.713970283Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:08:15.739409433Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:08:15.739463631Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:08:15.739479552Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:08:15.739489961Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:08:15.739508589Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:08:20.755942984Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:08:20.787901115Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:08:20.787993626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:08:20.807641496Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:08:20.80768323Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:08:20.807699175Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:08:20.807711309Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:08:20.807719935Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:08:25.825219585Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:08:25.854528984Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:08:25.854623513Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:08:25.877248031Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:08:25.877296624Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:08:25.877312244Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:08:25.877346927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:08:25.87735644Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:08:30.895302782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:08:30.924109474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:08:30.924222207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:08:30.947686927Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:08:30.947730766Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:08:30.947744918Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:08:30.947756064Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:08:30.947766069Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:08:35.965567817Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:08:35.995831779Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:08:35.995947399Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:08:36.023574639Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:08:36.023625186Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:08:36.023640242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:08:36.023649701Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:08:36.023659113Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:08:41.045317021Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:08:41.075363787Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:08:41.075531647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:08:41.099603268Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:08:41.099645979Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:08:41.099660967Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:08:41.099671439Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:08:41.099690393Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:08:46.117655844Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:08:46.14674434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:08:46.146845694Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:08:46.170072753Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:08:46.170111649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:08:46.170124986Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:08:46.170135841Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:08:46.170145764Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:08:51.188316646Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:08:51.217984099Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:08:51.21805884Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:08:51.23916251Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:08:51.239210909Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:08:51.239228127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:08:51.239255075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:08:51.239267459Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:08:56.25961021Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:08:56.289872283Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:08:56.289982216Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:08:56.314330445Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:08:56.314377486Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:08:56.314393362Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:08:56.314403271Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:08:56.314412856Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:09:01.344490306Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:09:01.380144397Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:09:01.38026802Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:09:01.405936371Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:09:01.406006856Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:09:01.406021271Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:09:01.406058757Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:09:01.4060685Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:09:06.421281399Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:09:06.449575664Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:09:06.449719602Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:09:06.473044321Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:09:06.473085794Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:09:06.473099497Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:09:06.473111958Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:09:06.473121185Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:09:11.494063419Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:09:11.521856273Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:09:11.521969966Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:09:11.543968603Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:09:11.544013887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:09:11.54402836Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:09:11.544039507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:09:11.544049744Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:09:16.56028011Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:09:16.590717789Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:09:16.590904784Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:09:16.615340932Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:09:16.615382548Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:09:16.615397618Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:09:16.615409244Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:09:16.615418455Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:09:21.638693259Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:09:21.66830831Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:09:21.668555138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:09:21.691642324Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:09:21.691684817Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:09:21.691699608Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:09:21.691710675Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:09:21.691721486Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:09:26.708163148Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:09:26.740434992Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:09:26.740570322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:09:26.767025545Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:09:26.767076301Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:09:26.76709159Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:09:26.767101836Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:09:26.76711035Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:09:31.783852712Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:09:31.815542539Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:09:31.815638612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:09:31.839095608Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:09:31.839138446Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:09:31.839153746Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:09:31.839165483Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:09:31.839174865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:09:36.854314557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:09:36.886904498Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:09:36.887010709Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:09:36.91272742Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:09:36.912775182Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:09:36.912788821Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:09:36.912812764Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:09:36.912823802Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:09:41.933549983Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:09:41.964123771Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:09:41.964253772Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:09:41.98755672Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:09:41.987596843Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:09:41.987609918Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:09:41.987621091Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:09:41.987629925Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:09:47.003346284Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:09:47.034040701Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:09:47.034140272Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:09:47.058154733Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:09:47.058196507Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:09:47.058210723Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:09:47.058222504Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:09:47.058244622Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:09:52.074295504Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:09:52.103369776Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:09:52.103463006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:09:52.12646212Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:09:52.126507577Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:09:52.126533399Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:09:52.126545162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:09:52.126553654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:09:57.14570843Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:09:57.175426497Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:09:57.175537942Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:09:57.199015116Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:09:57.199056025Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:09:57.199068867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:09:57.199081354Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:09:57.199090526Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:10:02.220267583Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:10:02.255489958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:10:02.25558777Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:10:02.327466981Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:10:02.327515043Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:10:02.327531421Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:10:02.327542069Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:10:02.327551427Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:10:07.342461416Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:10:07.37118531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:10:07.371295755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:10:07.394696776Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:10:07.394741317Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:10:07.394755127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:10:07.394765314Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:10:07.394774122Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:10:12.414296659Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:10:12.44280079Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:10:12.442913858Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:10:12.466614108Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:10:12.46665465Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:10:12.46666839Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:10:12.466679501Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:10:12.466689624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:10:17.488299237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:10:17.518511969Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:10:17.518637767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:10:17.546222747Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:10:17.546283374Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:10:17.546299Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:10:17.546309533Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:10:17.546317705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:10:22.564451274Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:10:22.594870763Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:10:22.594989455Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:10:22.619600994Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:10:22.619647982Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:10:22.619663173Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:10:22.619672089Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:10:22.619678748Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:10:27.63538661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:10:27.662504374Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:10:27.662616179Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:10:27.686625071Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:10:27.686668314Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:10:27.686682009Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:10:27.686691838Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:10:27.686700806Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:10:32.699293549Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:10:32.72701389Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:10:32.727107025Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:10:32.751825119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:10:32.751883998Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:10:32.751900164Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:10:32.751965554Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:10:32.751976712Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:10:37.766851006Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:10:37.795777163Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:10:37.795885752Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:10:37.81923114Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:10:37.819293305Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:10:37.819307841Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:10:37.819317363Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:10:37.819327462Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:10:42.836573701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:10:42.867988915Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:10:42.868083734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:10:42.889872179Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:10:42.889916755Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:10:42.88993107Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:10:42.889959595Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:10:42.889969108Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:10:47.906537126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:10:47.935515256Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:10:47.935628234Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:10:47.960033021Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:10:47.960077287Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:10:47.960092122Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:10:47.960104635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:10:47.960113044Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:10:52.979365048Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:10:53.009705023Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:10:53.009797822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:10:53.034095056Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:10:53.034136115Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:10:53.034150337Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:10:53.034160917Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:10:53.034169999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:10:58.053280793Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:10:58.084314808Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:10:58.084432907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:10:58.106910655Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:10:58.10695563Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:10:58.106969268Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:10:58.106981414Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:10:58.106990795Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:11:03.124573764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:11:03.154790697Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:11:03.154909576Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:11:03.178179194Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:11:03.178229375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:11:03.178255882Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:11:03.178267265Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:11:03.178275957Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:11:08.197970401Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:11:08.228598473Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:11:08.228697417Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:11:08.252665276Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:11:08.252709881Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:11:08.252724681Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:11:08.25275325Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:11:08.252763179Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:11:13.266748266Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:11:13.297877712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:11:13.297982681Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:11:13.322469481Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:11:13.32251587Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:11:13.322532703Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:11:13.322575681Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:11:13.322586278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:11:18.343281551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:11:18.371307707Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:11:18.371396868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:11:18.394489882Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:11:18.394546355Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:11:18.394561082Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:11:18.394570578Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:11:18.394579346Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:11:23.412842928Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:11:23.442081468Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:11:23.442187136Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:11:23.463958333Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:11:23.464002903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:11:23.464015696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:11:23.464025426Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:11:23.464034111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:11:28.482059794Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:11:28.512083881Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:11:28.512280087Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:11:28.53638633Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:11:28.536520046Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:11:28.536539599Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:11:28.536552049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:11:28.53656238Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:11:33.553290099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:11:33.584391428Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:11:33.584601463Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:11:33.60772508Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:11:33.60776342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:11:33.607776872Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:11:33.607788286Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:11:33.607798578Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:11:38.630297523Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:11:38.65866847Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:11:38.658748768Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:11:38.680403646Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:11:38.680561863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:11:38.680580699Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:11:38.680591428Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:11:38.680600259Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:11:43.697078762Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:11:43.727136372Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:11:43.727265849Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:11:43.752318275Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:11:43.752362332Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:11:43.752403432Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:11:43.75241463Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:11:43.752423416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:11:48.775519302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:11:48.805838517Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:11:48.805956879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:11:48.828522908Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:11:48.828581557Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:11:48.828597227Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:11:48.828608086Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:11:48.828618268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:11:53.844100667Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:11:53.875687977Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:11:53.875812529Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:11:53.898398811Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:11:53.898441669Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:11:53.898455541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:11:53.89846645Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:11:53.898477473Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:11:58.916795236Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:11:58.945525137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:11:58.945630887Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:11:58.971765226Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:11:58.971809198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:11:58.971823662Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:11:58.971835201Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:11:58.971843849Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:12:03.988536832Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:12:04.019311281Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:12:04.019422823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:12:04.044750485Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:12:04.044810582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:12:04.0448265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:12:04.044872822Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:12:04.044882615Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:12:09.061869027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:12:09.09236916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:12:09.092614792Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:12:09.11525383Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:12:09.115308118Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:12:09.115323237Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:12:09.115334384Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:12:09.115343148Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:12:14.1322952Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:12:14.161456107Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:12:14.161544945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:12:14.181520314Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:12:14.181560997Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:12:14.181575287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:12:14.181587822Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:12:14.181596841Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:12:19.201514036Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:12:19.229806533Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:12:19.229922559Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:12:19.252997953Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:12:19.25304344Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:12:19.25305808Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:12:19.253069522Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:12:19.253079296Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:12:24.267683984Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:12:24.29868128Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:12:24.298776046Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:12:24.323613698Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:12:24.323657158Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:12:24.323670329Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:12:24.323681044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:12:24.323691274Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:12:29.337790822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:12:29.367721164Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:12:29.367813Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:12:29.388338501Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:12:29.388382641Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:12:29.388396768Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:12:29.388408631Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:12:29.388417929Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:12:34.404393549Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:12:34.433498143Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:12:34.433590298Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:12:34.45713634Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:12:34.457180297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:12:34.45719655Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:12:34.45720638Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:12:34.457215853Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:12:39.474817538Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:12:39.506186313Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:12:39.506315857Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:12:39.526476892Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:12:39.52652095Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:12:39.526535351Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:12:39.526544829Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:12:39.526553034Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:12:44.541288874Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:12:44.570130235Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:12:44.570254834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:12:44.594633081Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:12:44.594685728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:12:44.594700539Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:12:44.594711016Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:12:44.59471998Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:12:49.61427131Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:12:49.644052538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:12:49.644165384Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:12:49.669434867Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:12:49.669482333Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:12:49.669496277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:12:49.669507735Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:12:49.66951754Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:12:54.686270403Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:12:54.715687424Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:12:54.715776566Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:12:54.741911824Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:12:54.741954042Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:12:54.741967998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:12:54.741978538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:12:54.741988621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:12:59.761171626Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:12:59.788806016Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:12:59.788928895Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:12:59.811660852Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:12:59.81170385Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:12:59.811718147Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:12:59.811727613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:12:59.811736157Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:13:04.826171701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:13:04.856727771Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:13:04.856829449Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:13:04.879040933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:13:04.879082134Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:13:04.879095535Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:13:04.87910726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:13:04.879116904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:13:09.89679749Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:13:09.926399631Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:13:09.926509931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:13:09.947989784Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:13:09.948037611Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:13:09.948050678Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:13:09.948061031Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:13:09.948070677Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:13:14.962980942Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:13:14.991997062Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:13:14.992108724Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:13:15.017839918Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:13:15.017882682Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:13:15.017896653Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:13:15.017908961Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:13:15.017918678Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:13:20.040380607Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:13:20.070259586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:13:20.070354969Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:13:20.093403803Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:13:20.093447424Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:13:20.093461643Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:13:20.093472959Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:13:20.093481559Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:13:25.109229198Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:13:25.138722149Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:13:25.138843228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:13:25.162707956Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:13:25.162767707Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:13:25.162782943Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:13:25.162793011Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:13:25.162801732Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:13:30.181609879Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:13:30.209397337Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:13:30.209489851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:13:30.232581421Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:13:30.232624799Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:13:30.232638795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:13:30.23264894Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:13:30.232657981Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:13:35.247709641Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:13:35.277658917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:13:35.277786603Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:13:35.29900129Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:13:35.299041335Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:13:35.299054428Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:13:35.299066207Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:13:35.299075451Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:13:40.319486587Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:13:40.348263339Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:13:40.348366673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:13:40.372207317Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:13:40.372272867Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:13:40.372287746Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:13:40.372298072Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:13:40.372306836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:13:40.372473665Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T23:13:45.391992754Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:13:45.423001072Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:13:45.423082321Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:13:45.443264192Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:13:45.443321136Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:13:45.443336684Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:13:45.443346095Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:13:45.443354078Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:13:50.46081057Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:13:50.492854994Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:13:50.492962807Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:13:50.516100853Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:13:50.516144773Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:13:50.516158435Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:13:50.516169164Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:13:50.516179304Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:13:55.53189835Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:13:55.561485586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:13:55.561596562Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:13:55.585672942Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:13:55.585712327Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:13:55.585725424Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:13:55.585764718Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:13:55.585773773Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:14:00.605301509Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:14:00.635864889Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:14:00.635963084Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:14:00.658089119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:14:00.658128305Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:14:00.658140924Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:14:00.658151745Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:14:00.658162004Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:14:05.673876929Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:14:05.705384759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:14:05.705475804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:14:05.729363725Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:14:05.729405819Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:14:05.729419279Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:14:05.729431612Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:14:05.729441799Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:14:10.748702283Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:14:10.778829019Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:14:10.778928591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:14:10.801410255Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:14:10.801454401Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:14:10.801469156Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:14:10.801503832Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:14:10.801512823Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:14:15.819946954Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:14:15.851058886Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:14:15.851177566Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:14:15.875892928Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:14:15.876308654Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:14:15.876629049Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:14:15.876645546Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:14:15.876657106Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:14:20.900855557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:14:20.9313512Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:14:20.931469266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:14:20.955921265Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:14:20.955964935Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:14:20.955978938Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:14:20.955990579Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:14:20.95599999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:14:25.972110445Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:14:26.002050066Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:14:26.002209226Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:14:26.022807423Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:14:26.022849807Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:14:26.022881246Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:14:26.022891161Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:14:26.022899864Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:14:31.044353343Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:14:31.074124962Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:14:31.07427583Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:14:31.095208597Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:14:31.095264554Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:14:31.0952791Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:14:31.095288048Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:14:31.095295898Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:14:36.110282769Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:14:36.139454146Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:14:36.139565909Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:14:36.163403942Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:14:36.163447348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:14:36.163462232Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:14:36.16347454Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:14:36.163492544Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:14:41.186842096Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:14:41.214559764Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:14:41.214675667Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:14:41.234691265Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:14:41.234732507Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:14:41.23474652Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:14:41.234756604Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:14:41.234767571Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:14:46.252120947Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:14:46.282071237Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:14:46.282187335Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:14:46.30890846Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:14:46.308951054Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:14:46.308966904Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:14:46.308977638Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:14:46.308987369Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:14:51.32649928Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:14:51.357106068Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:14:51.357201297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:14:51.380540745Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:14:51.38058406Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:14:51.380597875Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:14:51.380631116Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:14:51.380640129Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:14:56.395047433Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:14:56.422955388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:14:56.423071215Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:14:56.446915197Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:14:56.446958017Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:14:56.446973924Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:14:56.44700953Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:14:56.447019327Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:15:01.470189349Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:15:01.550881093Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:15:01.551046416Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:15:01.649397021Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:15:01.649444467Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:15:01.64945992Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:15:01.649535011Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:15:01.649544586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:15:06.670291629Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:15:06.700950624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:15:06.701074782Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:15:06.723378491Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:15:06.723423725Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:15:06.723437038Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:15:06.723447097Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:15:06.723458182Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:15:11.742878954Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:15:11.772150304Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:15:11.772274042Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:15:11.792062879Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:15:11.792106072Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:15:11.792144397Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:15:11.792154973Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:15:11.792163251Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:15:16.812298796Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:15:16.841597505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:15:16.841719161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:15:16.862346461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:15:16.862387557Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:15:16.862401224Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:15:16.862412743Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:15:16.862422425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:15:21.883138068Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:15:21.912123117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:15:21.912208399Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:15:21.937261589Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:15:21.937304212Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:15:21.93731893Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:15:21.937330151Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:15:21.937339782Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:15:26.953127962Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:15:26.98275358Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:15:26.982866346Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:15:27.003653199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:15:27.003698958Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:15:27.003713772Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:15:27.00372576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:15:27.003735836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:15:32.020281604Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:15:32.048350487Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:15:32.04857315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:15:32.068680807Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:15:32.068721318Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:15:32.068735886Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:15:32.068747445Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:15:32.068756559Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:15:37.08712728Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:15:37.1168808Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:15:37.116977882Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:15:37.140739624Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:15:37.140788931Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:15:37.140803699Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:15:37.140812175Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:15:37.140819034Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:15:42.157136999Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:15:42.186850586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:15:42.186958983Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:15:42.208025282Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:15:42.208074781Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:15:42.208090819Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:15:42.208101871Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:15:42.208111269Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:15:47.224187976Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:15:47.254976559Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:15:47.255058062Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:15:47.27607729Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:15:47.276118601Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:15:47.276131951Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:15:47.276168973Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:15:47.276178392Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:15:52.299927961Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:15:52.329864516Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:15:52.329971505Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:15:52.350935429Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:15:52.350978348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:15:52.350992765Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:15:52.351015307Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:15:52.35102427Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:15:57.371774535Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:15:57.401137813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:15:57.401279451Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:15:57.42493867Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:15:57.424983524Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:15:57.424998108Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:15:57.425010871Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:15:57.425020908Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:16:02.449298509Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:16:02.47922863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:16:02.479356987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:16:02.504997634Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:16:02.505056614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:16:02.505072709Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:16:02.505083805Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:16:02.505092245Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:16:07.520289128Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:16:07.550646855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:16:07.550781676Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:16:07.574761854Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:16:07.574807685Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:16:07.574821587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:16:07.574832554Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:16:07.574842471Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:16:12.590700424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:16:12.621314401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:16:12.621449897Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:16:12.645331155Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:16:12.64537308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:16:12.64538781Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:16:12.645398191Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:16:12.645408625Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:16:17.66626884Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:16:17.693486738Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:16:17.693592798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:16:17.719380776Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:16:17.719421048Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:16:17.719452378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:16:17.719462543Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:16:17.719471768Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:16:22.739299603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:16:22.769192083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:16:22.76929835Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:16:22.791433483Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:16:22.791492054Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:16:22.791506826Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:16:22.791516901Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:16:22.791525358Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:16:27.806003514Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:16:27.834805495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:16:27.834895643Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:16:27.859724979Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:16:27.859768867Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:16:27.859789238Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:16:27.859828463Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:16:27.859838152Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:16:32.879112668Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:16:32.911758613Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:16:32.911870464Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:16:32.933057975Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:16:32.933108256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:16:32.933126214Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:16:32.933137995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:16:32.933147583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:16:37.952287777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:16:37.982125388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:16:37.982231013Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:16:38.004908112Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:16:38.004953824Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:16:38.00496987Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:16:38.004981093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:16:38.00499112Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:16:43.026288358Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:16:43.055656544Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:16:43.055764549Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:16:43.081040379Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:16:43.081100273Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:16:43.081114624Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:16:43.081124403Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:16:43.081133545Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:16:48.102454131Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:16:48.131160045Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:16:48.131268357Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:16:48.154985792Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:16:48.155027793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:16:48.155041134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:16:48.155052666Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:16:48.155062274Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:16:53.170989918Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:16:53.201971072Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:16:53.202097412Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:16:53.227039757Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:16:53.227094725Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:16:53.227111727Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:16:53.227167239Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:16:53.227177239Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:16:58.244494666Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:16:58.274011919Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:16:58.274130083Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:16:58.29649688Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:16:58.296553334Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:16:58.296567722Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:16:58.296578565Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:16:58.296587901Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:17:03.310026179Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:17:03.342346655Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:17:03.342465001Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:17:03.364947107Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:17:03.365005487Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:17:03.365020742Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:17:03.36503046Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:17:03.365038811Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:17:08.383426361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:17:08.414027982Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:17:08.414135946Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:17:08.439327491Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:17:08.439383743Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:17:08.439401162Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:17:08.439412997Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:17:08.439422213Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:17:13.458290541Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:17:13.488120625Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:17:13.488215661Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:17:13.510922791Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:17:13.510968468Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:17:13.510982053Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:17:13.510992997Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:17:13.511002025Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:17:18.53028548Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:17:18.559806575Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:17:18.559921528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:17:18.585522252Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:17:18.58556708Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:17:18.585580673Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:17:18.585592796Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:17:18.585602678Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:17:23.601266275Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:17:23.630973282Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:17:23.631090272Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:17:23.656693244Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:17:23.656739964Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:17:23.656755497Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:17:23.65676731Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:17:23.656776804Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:17:28.673288792Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:17:28.702806533Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:17:28.702921421Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:17:28.729924023Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:17:28.730404819Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:17:28.730448103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:17:28.7304633Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:17:28.730476169Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:17:33.747621626Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:17:33.777435859Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:17:33.777528811Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:17:33.805399653Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:17:33.805442734Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:17:33.805457894Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:17:33.805468869Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:17:33.805478331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:17:38.826308463Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:17:38.854394052Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:17:38.854488816Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:17:38.879899398Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:17:38.879939203Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:17:38.879974572Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:17:38.879985637Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:17:38.879993964Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:17:43.895507792Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:17:43.924823447Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:17:43.924933646Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:17:43.947401839Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:17:43.947445566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:17:43.947460556Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:17:43.947472734Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:17:43.947481651Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:17:48.967468559Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:17:48.997176438Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:17:48.997309176Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:17:49.020466144Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:17:49.020904921Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:17:49.020930174Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:17:49.020967164Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:17:49.020979627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:17:54.035168758Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:17:54.064333791Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:17:54.064660277Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:17:54.086502067Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:17:54.08654525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:17:54.08656019Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:17:54.08660059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:17:54.086609384Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:17:59.105293892Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:17:59.134154014Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:17:59.13426247Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:17:59.161401525Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:17:59.161445272Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:17:59.161481065Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:17:59.161523722Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:17:59.161533776Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:18:04.178077378Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:18:04.209315708Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:18:04.209443436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:18:04.232690472Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:18:04.232730014Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:18:04.232744189Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:18:04.232755529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:18:04.232764758Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:18:09.252320088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:18:09.281261174Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:18:09.281366844Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:18:09.303139127Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:18:09.303181336Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:18:09.303196334Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:18:09.303231542Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:18:09.303253636Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:18:14.3203277Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:18:14.347598743Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:18:14.347686366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:18:14.368017168Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:18:14.368059044Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:18:14.368072344Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:18:14.368109464Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:18:14.368119278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:18:19.382226856Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:18:19.411533946Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:18:19.41162724Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:18:19.436861049Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:18:19.436908325Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:18:19.436923694Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:18:19.436934598Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:18:19.436942436Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:18:24.453296613Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:18:24.48246371Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:18:24.482565439Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:18:24.506806157Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:18:24.506863241Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:18:24.506878164Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:18:24.506887385Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:18:24.506896063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:18:29.525199002Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:18:29.555413409Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:18:29.555531445Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:18:29.581560849Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:18:29.581609421Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:18:29.581625933Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:18:29.581634804Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:18:29.581648221Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:18:34.597334593Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:18:34.628471286Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:18:34.62859242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:18:34.653884649Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:18:34.653947608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:18:34.653962929Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:18:34.653973654Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:18:34.653982552Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:18:39.675365488Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:18:39.703751021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:18:39.703912529Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:18:39.732393478Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:18:39.732514673Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:18:39.732531009Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:18:39.73254155Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:18:39.732550554Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:18:44.74928492Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:18:44.782065132Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:18:44.782176447Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:18:44.807095682Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:18:44.80714067Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:18:44.807156852Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:18:44.80718643Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:18:44.807205362Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:18:49.830461167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:18:49.860310276Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:18:49.860485378Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:18:49.885060631Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:18:49.885121568Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:18:49.885136347Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:18:49.885145772Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:18:49.885155548Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:18:54.901364656Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:18:54.931639485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:18:54.931732482Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:18:54.955699575Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:18:54.955744926Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:18:54.955758256Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:18:54.955768267Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:18:54.955778755Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:18:59.973291256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:19:00.002805649Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:19:00.002935134Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:19:00.039086576Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:19:00.039133525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:19:00.039282491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:19:00.039296987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:19:00.039306099Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:19:05.056990889Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:19:05.087739622Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:19:05.087848464Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:19:05.110575107Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:19:05.11061886Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:19:05.110633394Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:19:05.110645831Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:19:05.110655871Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:19:10.13428256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:19:10.165396689Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:19:10.165510201Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:19:10.192227958Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:19:10.192284135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:19:10.192297869Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:19:10.192308858Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:19:10.192317577Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:19:15.206718345Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:19:15.238201093Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:19:15.238339314Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:19:15.262829503Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:19:15.262875355Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:19:15.262889262Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:19:15.262917161Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:19:15.262926822Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:19:20.284288776Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:19:20.313185666Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:19:20.313320117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:19:20.337180454Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:19:20.337224075Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:19:20.337249697Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:19:20.337261131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:19:20.337269797Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:19:25.355282875Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:19:25.383598194Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:19:25.383766777Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:19:25.408044643Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:19:25.408088127Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:19:25.408101391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:19:25.408112357Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:19:25.408122032Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:19:30.426279689Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:19:30.456871659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:19:30.456990399Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:19:30.480582242Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:19:30.480624744Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:19:30.480638426Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:19:30.480682466Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:19:30.480691904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:19:35.498310316Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:19:35.525429996Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:19:35.525552559Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:19:35.547871218Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:19:35.547928263Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:19:35.547945119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:19:35.547954815Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:19:35.547963148Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:19:40.56941616Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:19:40.596394756Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:19:40.596534847Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:19:40.617772703Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:19:40.617814193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:19:40.61782913Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:19:40.617840186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:19:40.617849406Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:19:45.63404533Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:19:45.661068645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:19:45.661156729Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:19:45.681260342Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:19:45.681300995Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:19:45.681314835Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:19:45.681349393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:19:45.681358428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:19:50.702298861Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:19:50.729436604Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:19:50.729544568Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:19:50.752797575Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:19:50.7528375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:19:50.752853659Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:19:50.752864385Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:19:50.752873907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:19:55.768044124Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:19:55.798183523Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:19:55.798386336Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:19:55.820569095Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:19:55.820609762Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:19:55.820622909Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:19:55.820634008Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:19:55.820642973Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:20:00.838405828Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:20:00.867736087Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:20:00.867832703Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:20:00.890333745Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:20:00.890709554Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:20:00.890749544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:20:00.890761983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:20:00.890773133Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:20:05.909017565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:20:05.937668484Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:20:05.937781016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:20:05.958179063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:20:05.958220064Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:20:05.958247312Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:20:05.958258275Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:20:05.958266835Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:20:10.97661663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:20:11.016036441Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:20:11.016145396Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:20:11.041071517Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:20:11.041114648Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:20:11.041130141Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:20:11.041141697Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:20:11.041152045Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:20:16.057287388Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:20:16.088086444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:20:16.088210552Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:20:16.111689638Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:20:16.11173216Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:20:16.111745783Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:20:16.111756603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:20:21.129374018Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:20:21.159663526Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:20:21.15975768Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:20:21.185182097Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:20:21.185230726Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:20:21.185258872Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:20:21.185269922Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:20:21.185279154Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:20:26.203369012Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:20:26.232898278Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:20:26.232996163Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:20:26.256307576Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:20:26.256347663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:20:26.256360796Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:20:26.25637238Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:20:26.256381934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:20:31.276297897Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:20:31.306662652Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:20:31.306760366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:20:31.329797574Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:20:31.330228716Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:20:31.330484556Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:20:31.330767905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:20:31.330988193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:20:36.345311849Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:20:36.375763568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:20:36.375886426Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:20:36.39799972Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:20:36.39804479Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:20:36.398058207Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:20:36.398070209Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:20:36.398080522Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:20:41.415276202Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:20:41.446212979Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:20:41.446321056Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:20:41.471665176Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:20:41.471707763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:20:41.471721486Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:20:41.471742041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:20:41.471750213Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:20:46.48846594Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:20:46.518355895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:20:46.518452661Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:20:46.543448908Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:20:46.54349229Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:20:46.543506445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:20:46.543526011Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:20:46.543535866Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:20:51.563902679Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:20:51.592055325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:20:51.592150931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:20:51.61747854Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:20:51.617540742Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:20:51.617555828Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:20:51.61756729Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:20:51.617576443Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:20:56.637271219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:20:56.666040682Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:20:56.666130416Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:20:56.688359494Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:20:56.688485217Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:20:56.68850376Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:20:56.688515528Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:20:56.688593491Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:21:01.714181189Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:21:01.746167805Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:21:01.746315907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:21:01.82179884Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:21:01.821845826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:21:01.821860347Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:21:01.82187107Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:21:01.821879738Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:21:06.837036376Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:21:06.868661916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:21:06.86875516Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:21:06.892040518Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:21:06.892085737Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:21:06.892100841Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:21:06.892112749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:21:06.892122061Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:21:11.912114156Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:21:11.94121339Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:21:11.94131592Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:21:11.967635723Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:21:11.967689618Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:21:16.98937982Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:21:17.018500366Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:21:17.018594492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:21:17.042854233Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:21:17.042896438Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:21:17.042912591Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:21:17.042924286Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:21:17.04293546Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:21:22.066089102Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:21:22.097654173Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:21:22.097758001Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:21:22.12248093Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:21:22.122528282Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:21:22.122544816Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:21:22.122555456Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:21:22.122562685Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:21:27.140299333Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:21:27.169503655Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:21:27.169625398Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:21:27.192343859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:21:27.192384705Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:21:27.192510644Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:21:27.192524871Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:21:27.192533898Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:21:32.210996423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:21:32.240645545Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:21:32.240768801Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:21:32.264043035Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:21:32.2640879Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:21:32.264101274Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:21:32.264110973Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:21:32.264121812Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:21:37.279168862Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:21:37.310458494Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:21:37.31056866Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:21:37.331152745Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:21:37.331191404Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:21:37.331205284Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:21:37.331215716Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:21:37.33122437Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:21:42.352630451Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:21:42.382366605Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:21:42.382463196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:21:42.40745296Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:21:42.407497488Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:21:42.407511562Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:21:42.40752164Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:21:42.407530561Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:21:47.425257472Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:21:47.452952006Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:21:47.453044273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:21:47.476669431Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:21:47.476710231Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:21:47.476725124Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:21:47.476735989Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:21:47.476744715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:21:52.493173676Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:21:52.52240257Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:21:52.52251524Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:21:52.547040551Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:21:52.547082727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:21:57.561495192Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:21:57.592688047Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:21:57.592783724Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:21:57.618647085Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:21:57.618707768Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:21:57.618723257Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:21:57.618733306Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:21:57.618741912Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:22:02.642855271Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:22:02.67313008Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:22:02.673226573Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:22:02.696229935Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:22:02.696286373Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:22:02.696300094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:22:02.696311078Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:22:02.696320012Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:22:07.716354525Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:22:07.744250015Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:22:07.744367071Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:22:07.769703921Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:22:07.770118647Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:22:07.770310879Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:22:07.770426139Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:22:07.770439656Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:22:12.792283195Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:22:12.82049044Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:22:12.820608587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:22:12.845446749Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:22:12.845489371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:22:12.84554226Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:22:12.845598125Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:22:12.845609588Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:22:17.865313161Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:22:17.894964941Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:22:17.895085382Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:22:17.921349623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:22:17.921394071Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:22:17.921408196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:22:17.921421694Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:22:17.921432376Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:22:22.939470111Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:22:22.970748195Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:22:22.970849046Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:22:22.992640805Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:22:22.992699781Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:22:22.992714364Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:22:22.992723462Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:22:22.992733877Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:22:28.007302558Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:22:28.040262101Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:22:28.040367349Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:22:28.064887429Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:22:28.064930206Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:22:28.064945015Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:22:28.064958012Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:22:28.064967786Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:22:33.087519291Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:22:33.118059806Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:22:33.118153353Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:22:33.140392141Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:22:33.140523337Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:22:33.140537436Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:22:33.140547803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:22:33.140557381Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:22:38.161058114Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:22:38.191148925Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:22:38.191277567Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:22:38.215038907Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:22:38.215084072Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:22:38.21509803Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:22:38.215109739Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:22:38.215120078Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:22:43.232274048Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:22:43.259780072Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:22:43.259898974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:22:43.284479664Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:22:43.284872032Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:22:43.28489462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:22:43.284907704Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:22:43.284919601Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:22:48.303842659Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:22:48.333874207Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:22:48.333977244Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:22:48.356251969Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:22:48.356294598Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:22:48.356308734Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:22:48.35632099Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:22:48.356330194Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:22:53.374736407Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:22:53.400841903Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:22:53.40095288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:22:53.424573792Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:22:53.424609417Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:22:53.424622933Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:22:53.424633052Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:22:53.424643243Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:22:58.439305847Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:22:58.472024199Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:22:58.472114785Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:22:58.496245785Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:22:58.496298371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:22:58.496314052Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:22:58.496325634Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:22:58.496334402Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:23:03.512834109Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:23:03.542811606Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:23:03.542928514Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:23:03.568073486Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:23:03.568116224Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:23:03.568167807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:23:03.568222704Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:23:03.568243549Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:23:08.584222483Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:23:08.615408621Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:23:08.615512828Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:23:08.636737928Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:23:08.636781789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:23:08.636828995Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:23:08.636839663Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:23:08.636848382Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:23:13.652756499Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:23:13.683783657Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:23:13.683885125Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:23:13.711678435Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:23:13.711719517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:23:13.711733461Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:23:13.711743778Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:23:13.711753134Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:23:18.73053474Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:23:18.760391672Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:23:18.76065651Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:23:18.7846949Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:23:18.784735604Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:23:18.784749526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:23:18.784760147Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:23:18.78476869Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:23:23.80191528Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:23:23.829359231Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:23:23.829451041Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:23:23.854571981Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:23:23.85461345Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:23:23.854627847Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:23:23.854640075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:23:23.85464942Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:23:28.872686361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:23:28.900887126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:23:28.900993627Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:23:28.920067649Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:23:28.920110814Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:23:28.920123893Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:23:28.920159333Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:23:28.920168231Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:23:33.937283621Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:23:33.964819819Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:23:33.964923737Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:23:33.994147176Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:23:33.994190118Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:23:33.994204944Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:23:33.994215907Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:23:33.994225002Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:23:39.010650424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:23:39.04061465Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:23:39.040733246Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:23:39.061365913Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:23:39.061406046Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:23:39.061421311Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:23:39.06143354Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:23:39.061443237Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:23:44.075285677Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:23:44.107531458Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:23:44.107652994Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:23:44.133809723Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:23:44.133853135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:23:44.133867817Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:23:44.133910077Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:23:44.133927183Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:23:49.14917596Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:23:49.179224562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:23:49.17933706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:23:49.198882033Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:23:49.198940241Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:23:49.198956461Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:23:49.199006279Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:23:49.199016362Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:23:54.214310863Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:23:54.243884906Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:23:54.243998192Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:23:54.270377848Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:23:54.270426569Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:23:54.270440113Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:23:54.270450574Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:23:54.270459209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:23:59.284906508Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:23:59.312744506Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:23:59.312832686Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:23:59.334426923Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:23:59.334469822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:23:59.334483421Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:23:59.334494584Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:23:59.334504576Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:24:04.350285193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:24:04.377596275Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:24:04.37772963Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:24:04.403005461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:24:04.403048069Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:24:04.403061446Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:24:04.40307369Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:24:04.403082918Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:24:09.420308967Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:24:09.449524023Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:24:09.44963087Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:24:09.475251911Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:24:09.475300148Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:24:09.475314736Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:24:09.475326515Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:24:09.475336324Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:24:14.491367517Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:24:14.521131899Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:24:14.521314641Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:24:14.545953266Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:24:14.545992806Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:24:14.546024303Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:24:14.546035083Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:24:14.546043754Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:24:19.566329091Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:24:19.595341478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:24:19.595449818Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:24:19.618669346Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:24:19.618725435Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:24:19.618739677Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:24:19.618749533Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:24:19.618757596Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:24:24.634775056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:24:24.664203108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:24:24.664320097Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:24:24.685422562Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:24:24.685469672Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:24:24.685483285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:24:24.68549469Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:24:24.685504852Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:24:29.70340594Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:24:29.733775891Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:24:29.733871451Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:24:29.75507287Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:24:29.755117616Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:24:29.755131052Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:24:29.755142603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:24:29.755152606Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:24:34.770876057Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:24:34.799789073Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:24:34.799881463Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:24:34.820640508Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:24:34.820692732Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:24:34.820707285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:24:34.820764281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:24:34.820775563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:24:39.839292687Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:24:39.869643399Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:24:39.869776123Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:24:39.890018982Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:24:39.890062159Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:24:39.890076834Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:24:39.890088494Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:24:39.890097665Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:24:44.90537678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:24:44.93624862Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:24:44.936350191Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:24:44.959056498Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:24:44.959201175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:24:44.95922031Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:24:44.959249762Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:24:44.959260474Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:24:49.978870245Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:24:50.016721302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:24:50.016843624Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:24:50.037322908Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:24:50.037363327Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:24:50.037376166Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:24:50.037388937Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:24:50.037399546Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:24:55.05489152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:24:55.087403025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:24:55.087514678Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:24:55.112354694Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:24:55.112395139Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:24:55.112409095Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:24:55.112531509Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:24:55.112544301Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:25:00.141252228Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:25:00.178866876Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:25:00.179085857Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:25:00.203167014Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:25:00.203209437Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:25:00.203225041Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:25:00.203249824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:25:00.203260009Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:25:05.224202434Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:25:05.251484292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:25:05.251576987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:25:05.277823773Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:25:05.277899469Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:25:05.277914396Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:25:05.277923474Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:25:05.27793266Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:25:10.294812771Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:25:10.325608737Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:25:10.325751672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:25:10.347117122Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:25:10.347161585Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:25:10.34717577Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:25:10.347187749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:25:10.347197451Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:25:15.365273922Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:25:15.393695993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:25:15.39379942Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:25:15.416408016Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:25:15.416457179Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:25:15.416490632Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:25:15.416502512Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:25:15.416513316Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:25:20.436305297Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:25:20.464164953Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:25:20.464272378Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:25:20.489843177Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:25:20.48989205Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:25:20.489907788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:25:20.489917513Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:25:20.489927484Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:25:25.507292236Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:25:25.535243846Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:25:25.535334495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:25:25.56010054Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:25:25.560175679Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:25:25.560201001Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:25:25.560211803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:25:25.56022131Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:25:30.576819437Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:25:30.606643603Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:25:30.606761141Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:25:30.628546596Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:25:30.628589172Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:25:30.628604099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:25:30.62861642Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:25:30.628626156Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:25:35.64811735Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:25:35.679838913Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:25:35.679961184Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:25:35.701739103Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:25:35.70177986Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:25:35.701793478Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:25:35.701826485Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:25:35.701835778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:25:40.723622226Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:25:40.752499482Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:25:40.752719877Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:25:40.777374752Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:25:40.777416955Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:25:40.777431905Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:25:40.777442733Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:25:40.777452918Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:25:45.795724759Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:25:45.825511008Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:25:45.82562322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:25:45.846900704Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:25:45.846942246Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:25:45.846956027Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:25:45.846979058Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:25:45.846988303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:25:50.861507095Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:25:50.893106521Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:25:50.893219229Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:25:50.919040616Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:25:50.91910343Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:25:50.91911967Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:25:50.919130082Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:25:50.919139274Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:25:55.940314536Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:25:55.969188008Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:25:55.969300496Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:25:55.992718231Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:25:55.992765581Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:25:55.99277999Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:25:55.992789118Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:25:55.992799404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:26:01.010305028Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:26:01.040296781Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:26:01.040400659Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:26:01.063530558Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:26:01.063576203Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:26:01.0635906Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:26:01.063601711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:26:01.063610839Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:26:06.082279239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:26:06.112408041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:26:06.113106511Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:26:06.13641214Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:26:06.136543388Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:26:06.136575932Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:26:06.136587948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:26:06.136596997Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:26:11.157160917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:26:11.184385363Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:26:11.184650884Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:26:11.206926847Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:26:11.206986103Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:26:11.207001514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:26:11.207011419Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:26:11.207019836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:26:16.22730237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:26:16.257991722Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:26:16.258117989Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:26:16.282632579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:26:16.282679709Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:26:16.282693746Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:26:16.28270405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:26:16.282712696Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:26:21.303733041Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:26:21.334467728Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:26:21.33459795Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:26:21.358257299Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:26:21.35830146Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:26:21.358317449Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:26:21.358327613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:26:21.358336899Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:26:26.375256334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:26:26.40402505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:26:26.404123104Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:26:26.430919179Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:26:26.430963012Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:26:26.430977431Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:26:26.430989612Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:26:26.430999254Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:26:31.45129739Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:26:31.480941372Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:26:31.481055341Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:26:31.501613352Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:26:31.501668794Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:26:31.501682761Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:26:31.501693145Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:26:31.50170139Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:26:36.515633Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:26:36.54440776Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:26:36.54499473Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:26:36.567682056Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:26:36.567723442Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:26:36.567737309Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:26:36.567748917Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:26:36.567758934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:26:41.585020164Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:26:41.639532556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:26:41.639660791Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:26:41.662529562Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:26:41.662589218Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:26:41.662604082Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:26:41.662614043Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:26:41.662622387Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:26:46.681451834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:26:46.712075933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:26:46.712191711Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:26:46.734802785Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:26:46.734843714Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:26:46.734858991Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:26:46.734869209Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:26:46.734878023Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:26:51.755288001Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:26:51.786383859Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:26:51.786490982Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:26:51.805798156Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:26:51.805839322Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:26:51.805853013Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:26:51.805864745Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:26:51.805874582Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:26:56.823716027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:26:56.85458354Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:26:56.854739036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:26:56.880723602Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:26:56.880765582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:26:56.880780031Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:26:56.880790668Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:26:56.880799054Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:27:01.90030073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:27:01.931414837Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:27:01.931509176Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:27:01.954824625Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:27:01.954867235Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:27:01.954881972Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:27:01.954893884Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:27:01.95490307Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:27:06.970609669Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:27:07.000790764Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:27:07.000917472Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:27:07.026398559Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:27:07.026440833Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:27:07.026454612Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:27:07.026465588Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:27:07.026474528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:27:12.043440336Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:27:12.074664047Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:27:12.074783183Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:27:12.100596967Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:27:12.100659463Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:27:12.100675374Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:27:12.100686838Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:27:12.100695604Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:27:17.12205613Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:27:17.151733942Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:27:17.151849689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:27:17.173750588Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:27:17.173803643Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:27:17.173818498Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:27:17.173829143Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:27:17.173839603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:27:22.190047871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:27:22.218592266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:27:22.218701739Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:27:22.241834703Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:27:22.241879489Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:27:22.241913972Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:27:22.24192442Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:27:22.241933165Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:27:27.25825375Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:27:27.288991968Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:27:27.289080683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:27:27.311606771Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:27:27.311661886Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:27:27.311676834Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:27:27.311686466Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:27:27.311694917Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:27:32.33053966Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:27:32.358427557Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:27:32.358538357Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:27:32.379499429Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:27:32.379546945Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:27:32.37956348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:27:32.379574157Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:27:32.379583181Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:27:37.397188189Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:27:37.429081172Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:27:37.429212761Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:27:37.449825252Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:27:37.449867719Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:27:37.449882066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:27:37.449892495Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:27:37.449900792Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:27:42.470301319Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:27:42.499728146Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:27:42.499818649Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:27:42.523861046Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:27:42.523919126Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:27:42.523933252Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:27:42.523942514Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:27:42.523950851Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:27:47.544194987Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:27:47.572055295Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:27:47.572190658Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:27:47.597181793Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:27:47.597225024Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:27:47.597265483Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:27:47.597278197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:27:47.59728809Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:27:52.612286025Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:27:52.642222901Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:27:52.642335567Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:27:52.666558549Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:27:52.66660148Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:27:52.666617816Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:27:52.666629222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:27:52.666729704Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:27:57.684094005Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:27:57.712917003Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:27:57.713027337Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:27:57.735055835Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:27:57.73510112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:27:57.735114793Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:27:57.735124071Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:27:57.735134137Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:28:02.75603557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:28:02.786685065Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:28:02.786786674Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:28:02.807090355Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:28:02.807132207Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:28:02.807145316Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:28:02.807155779Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:28:02.807165966Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:28:07.821635579Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:28:07.850783687Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:28:07.850903531Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:28:07.875550006Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:28:07.875591568Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:28:07.875626498Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:28:07.875636517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:28:07.875644894Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:28:12.890853441Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:28:12.919096314Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:28:12.919199316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:28:12.941538958Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:28:12.941628257Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:28:12.941644886Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:28:12.94165471Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:28:12.941730232Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:28:17.959340753Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:28:17.989979667Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:28:17.9900749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:28:18.011099034Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:28:18.011140567Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:28:18.011199266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:28:18.011373967Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T23:28:18.011428191Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:28:18.011439281Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:28:23.02787187Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:28:23.058397474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:28:23.058516288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:28:23.082312551Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:28:23.082359312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:28:23.082373858Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:28:23.082385584Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:28:23.082394358Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:28:28.095755145Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:28:28.126788357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:28:28.126904679Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:28:28.151225978Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:28:28.151293849Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:28:28.151308861Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:28:28.151336546Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:28:28.151346176Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:28:33.168313374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:28:33.196686446Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:28:33.196808263Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:28:33.220985892Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:28:33.221029955Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:28:33.221044602Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:28:33.221056271Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:28:33.22106587Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:28:38.238365217Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:28:38.269433231Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:28:38.269525109Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:28:38.292402231Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:28:38.292542736Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:28:38.292558048Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:28:38.292568761Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:28:38.292577527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:28:43.311114234Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:28:43.341206294Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:28:43.341338896Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:28:43.364409337Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:28:43.364527805Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:28:43.364542797Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:28:43.364553511Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:28:43.364563053Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:28:48.386001265Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:28:48.417588338Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:28:48.417729541Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:28:48.440855989Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:28:48.440899499Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:28:48.440912638Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:28:48.440923297Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:28:48.440933333Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:28:53.454292672Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:28:53.484913347Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:28:53.485040537Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:28:53.507598199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:28:53.507649269Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:28:53.507666504Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:28:53.507676625Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:28:53.507685044Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:28:58.524827878Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:28:58.553719037Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:28:58.553831494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:28:58.578860093Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:28:58.578919068Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:28:58.578934476Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:28:58.578945306Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:28:58.578954597Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:29:03.595320673Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:29:03.6243569Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:29:03.6245413Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:29:03.648007137Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:29:03.648050448Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:29:03.648064544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:29:03.648077766Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:29:03.648087163Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:29:08.667928675Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:29:08.698740659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:29:08.698830782Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:29:08.722403513Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:29:08.722444061Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:29:08.722457537Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:29:08.722468459Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:29:08.722478568Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:29:13.735477315Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:29:13.767624292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:29:13.767724818Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:29:13.791949665Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:29:13.792001614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:29:13.792016861Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:29:13.792028494Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:29:13.792037033Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:29:18.810615165Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:29:18.840818114Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:29:18.840938675Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:29:18.869919492Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:29:18.869961084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:29:18.869975664Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:29:18.86998828Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:29:18.869997992Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:29:23.889512293Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:29:23.918274931Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:29:23.91836451Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:29:23.943526397Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:29:23.943570797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:29:23.943584083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:29:23.94359568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:29:23.94360505Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:29:28.958857602Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:29:28.98592661Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:29:28.986018088Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:29:29.006959721Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:29:29.007018413Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:29:29.007034377Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:29:29.007044601Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:29:29.007181875Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T23:29:29.007053325Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:29:34.025322825Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:29:34.055402256Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:29:34.055517567Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:29:34.078382776Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:29:34.078445398Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:29:34.078461707Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:29:34.078472075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:29:34.078480775Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:29:39.091464872Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:29:39.122088541Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:29:39.122181691Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:29:39.148387306Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:29:39.148508442Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:29:39.148585033Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:29:39.148616364Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:29:39.148626312Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:29:44.167286569Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:29:44.195273677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:29:44.195362796Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:29:44.220042668Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:29:44.220085775Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:29:44.220099581Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:29:44.220112126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:29:44.220121727Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:29:49.240574049Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:29:49.268720525Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:29:49.268831182Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:29:49.291811381Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:29:49.291850516Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:29:49.291863813Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:29:49.291875137Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:29:49.291884711Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:29:54.308289718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:29:54.337201473Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:29:54.337350068Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:29:54.366101096Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:29:54.366161464Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:29:54.366178517Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:29:54.36618831Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:29:54.366197188Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:29:59.382696807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:29:59.412227519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:29:59.412340872Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:29:59.43525694Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:29:59.435298578Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:29:59.435311537Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:29:59.435324393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:29:59.435333662Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:30:04.453765215Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:30:04.486277121Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:30:04.486407776Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:30:04.511344661Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:30:04.511411879Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:30:04.5114263Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:30:04.511437024Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:30:04.511445941Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:30:09.531561058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:30:09.559050753Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:30:09.559165869Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:30:09.580806141Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:30:09.580853945Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:30:09.580868409Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:30:09.580879732Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:30:09.580887183Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:30:14.598305877Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:30:14.627969976Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:30:14.628082839Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:30:14.649440952Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:30:14.649486509Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:30:14.649501026Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:30:14.649512695Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:30:14.649522136Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:30:19.666261591Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:30:19.695024066Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:30:19.695127321Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:30:19.715444025Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:30:19.715488363Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:30:24.730224603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:30:24.761030584Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:30:24.761145471Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:30:24.784856286Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:30:24.784918253Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:30:24.784934114Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:30:24.784944552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:30:24.784953207Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:30:29.800220008Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:30:29.83150541Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:30:29.831627479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:30:29.855916231Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:30:29.855964466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:30:29.855978831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:30:29.855988498Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:30:29.855998478Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:30:34.875284764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:30:34.904117558Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:30:34.904228153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:30:34.927885543Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:30:34.927928905Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:30:34.927944767Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:30:34.927955341Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:30:34.927965673Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:30:39.945282805Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:30:39.974249047Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:30:39.97436608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:30:40.000733007Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:30:40.000776226Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:30:40.000790614Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:30:40.000802966Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:30:40.000812603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:30:45.02429601Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:30:45.054882809Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:30:45.054976173Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:30:45.078053163Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:30:45.078109665Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:30:45.078125279Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:30:45.07813551Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:30:45.078143725Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:30:50.094200582Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:30:50.123034885Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:30:50.123163673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:30:50.147282321Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:30:50.147326721Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:30:50.147342172Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:30:50.147353543Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:30:50.147364068Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:30:55.160297152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:30:55.193206345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:30:55.193322188Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:30:55.219656569Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:30:55.219697385Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:30:55.219712405Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:30:55.219723465Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:30:55.219733133Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:31:00.238620491Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:31:00.268564697Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:31:00.268684845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:31:00.29260379Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:31:00.292659444Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:31:00.292674634Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:31:00.292684002Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:31:00.292692644Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:31:05.310539106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:31:05.339883587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:31:05.33998422Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:31:05.36200862Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:31:05.362052813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:31:05.362066368Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:31:05.362078327Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:31:05.362087717Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:31:10.38362375Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:31:10.414547825Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:31:10.414657414Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:31:10.43901682Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:31:10.439060763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:31:10.439073914Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:31:10.439085307Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:31:10.439095527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:31:15.455609256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:31:15.488650264Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:31:15.488748822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:31:15.514350737Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:31:15.51442498Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:31:15.514453399Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:31:15.51446335Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:31:15.514472017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:31:20.535721691Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:31:20.565573379Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:31:20.565689135Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:31:20.590477042Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:31:20.590524754Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:31:25.604310665Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:31:25.635581296Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:31:25.635688467Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:31:25.655283268Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:31:25.655328954Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:31:25.655342437Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:31:25.65535235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:31:25.655361519Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:31:30.674465284Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:31:30.704053159Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:31:30.704160255Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:31:30.730066496Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:31:30.730121064Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:31:30.730138239Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:31:30.730148335Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:31:30.730157579Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:31:35.745446147Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:31:35.775511934Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:31:35.775651883Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:31:35.799140438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:31:35.799180703Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:31:35.799194333Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:31:35.799203435Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:31:35.799213235Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:31:40.821779276Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:31:40.856197201Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:31:40.856301319Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:31:40.883425224Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:31:40.883462129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:31:40.883476573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:31:40.883487208Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:31:40.883497672Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:31:45.900838224Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:31:45.931480847Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:31:45.931620686Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:31:45.956389187Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:31:45.956593256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:31:45.956612566Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:31:45.956624125Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:31:45.956721086Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:31:50.976013177Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:31:51.003220894Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:31:51.003369688Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:31:51.027330677Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:31:51.027371181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:31:51.027385628Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:31:51.027395587Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:31:51.027403988Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:31:56.044306271Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:31:56.073943836Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:31:56.074054412Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:31:56.09474288Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:31:56.09478535Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:31:56.094798785Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:31:56.094809999Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:31:56.094819797Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:32:01.113275748Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:32:01.149058624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:32:01.149163207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:32:01.177050232Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:32:01.177099386Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:32:01.177114267Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:32:01.177127154Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:32:01.177137536Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:32:06.193312905Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:32:06.22107512Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:32:06.221181239Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:32:06.240531185Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:32:06.240587811Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:32:06.24060246Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:32:06.240612764Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:32:06.24062178Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:32:11.261401456Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:32:11.290667013Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:32:11.29078288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:32:11.314017388Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:32:11.314058799Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:32:11.314072968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:32:11.31408278Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:32:11.314091992Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:32:16.328411065Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:32:16.358939461Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:32:16.359040605Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:32:16.381373952Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:32:16.381418896Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:32:16.381432081Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:32:16.381442361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:32:16.381452771Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:32:21.403281456Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:32:21.430420695Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:32:21.430512922Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:32:21.452809136Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:32:21.452856405Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:32:21.452870549Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:32:21.452879419Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:32:21.452886571Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:32:26.471311301Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:32:26.500865251Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:32:26.500975882Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:32:26.523647895Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:32:26.523708269Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:32:26.523722317Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:32:26.523732459Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:32:26.523740782Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:32:31.53907709Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:32:31.568085756Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:32:31.568166469Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:32:31.591022851Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:32:31.591062612Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:32:31.591075408Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:32:31.591087109Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:32:31.591097483Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:32:36.605288301Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:32:36.635706631Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:32:36.635817549Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:32:36.660196031Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:32:36.660259517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:32:41.680628986Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:32:41.710720908Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:32:41.710822521Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:32:41.733337255Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:32:41.733378599Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:32:41.733392911Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:32:41.733404024Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:32:41.733414051Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:32:46.749503423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:32:46.778319104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:32:46.778472965Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:32:46.802556987Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:32:46.802599343Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:32:46.802613258Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:32:46.802635789Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:32:46.802644731Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:32:51.824631131Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:32:51.852802049Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:32:51.852902925Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:32:51.876512641Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:32:51.876571811Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:32:51.876588564Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:32:51.87659904Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:32:51.876607623Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:32:56.896950586Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:32:56.925996386Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:32:56.926116831Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:32:56.948546806Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:32:56.948616199Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:32:56.948631929Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:32:56.948642432Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:32:56.948651627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:33:01.969297146Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:33:02.009985165Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:33:02.010119992Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:33:02.033680962Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:33:02.033819108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:33:02.033836511Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:33:02.03385954Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:33:02.033869204Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:33:07.048987534Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:33:07.080666911Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:33:07.080778366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:33:07.103797315Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:33:07.103843174Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:33:07.10385923Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:33:07.103870564Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:33:07.103879707Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:33:12.124295493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:33:12.154149842Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:33:12.154270106Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:33:12.178215659Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:33:12.178284085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:33:12.178300074Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:33:12.178311176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:33:12.178320341Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:33:17.196752516Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:33:17.224394788Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:33:17.22457227Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:33:17.250107367Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:33:17.250150595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:33:17.250166662Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:33:17.250178106Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:33:17.250187894Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:33:22.268220909Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:33:22.301061425Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:33:22.301153673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:33:22.325012564Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:33:22.325061064Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:33:22.325074996Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:33:22.325086906Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:33:22.325098183Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:33:27.346933508Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:33:27.375768258Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:33:27.375886643Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:33:27.401023867Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:33:27.401066059Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:33:27.401081261Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:33:27.401093507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:33:27.401102028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:33:32.42126833Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:33:32.449592279Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:33:32.449683846Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:33:32.4751488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:33:32.475188131Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:33:32.47520224Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:33:32.475214238Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:33:32.475223686Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:33:37.491566103Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:33:37.521656799Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:33:37.521788991Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:33:37.546722864Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:33:37.546776059Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:33:37.546791388Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:33:37.546801959Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:33:37.546810356Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:33:42.565640239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:33:42.595664296Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:33:42.595805555Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:33:42.6154037Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:33:42.615447717Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:33:42.615492915Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:33:42.615504139Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:33:42.615512608Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:33:47.634294731Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:33:47.665196799Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:33:47.665301357Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:33:47.685965184Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:33:47.686008736Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:33:47.686022287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:33:47.686034316Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:33:47.686044096Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:33:52.703290013Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:33:52.732931214Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:33:52.733042138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:33:52.752744834Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:33:52.752799866Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:33:52.752815026Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:33:52.75282607Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:33:52.752835024Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:33:57.766279743Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:33:57.795626107Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:33:57.795718297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:33:57.816766488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:33:57.816825239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:33:57.816840671Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:33:57.816850313Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:33:57.816859436Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:34:02.837484005Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:34:02.869035091Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:34:02.869131704Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:34:02.893142693Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:34:07.910213827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:34:07.943451562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:34:07.943540707Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:34:07.965032024Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:34:07.965076117Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:34:07.96509043Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:34:07.965131003Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:34:07.96514051Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:34:12.985299497Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:34:13.015670577Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:34:13.015765086Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:34:13.037501702Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:34:13.037591708Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:34:13.037607895Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:34:13.037662611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:34:13.037673792Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:34:18.056571028Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:34:18.088198253Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:34:18.08834034Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:34:18.114644203Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:34:23.12848864Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:34:23.155575496Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:34:23.155663877Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:34:23.176881696Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:34:23.176925856Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:34:23.176939619Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:34:23.176951113Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:34:23.176961004Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:34:28.191802173Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:34:28.220822687Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:34:28.220941597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:34:28.241906487Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:34:28.241950557Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:34:28.241963851Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:34:28.241975041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:34:28.241984781Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:34:33.258568085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:34:33.285110861Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:34:33.28523401Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:34:33.305074796Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:34:33.305135296Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:34:33.305149288Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:34:33.305159342Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:34:33.305316651Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T23:34:33.305169868Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:34:38.322773573Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:34:38.354476746Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:34:38.354585966Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:34:38.377352551Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:34:38.377396806Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:34:38.377410916Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:34:38.377451139Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:34:38.377460371Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:34:43.393829775Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:34:43.422448035Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:34:43.422548504Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:34:43.442894821Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:34:43.442941302Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:34:43.442954856Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:34:43.442965223Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:34:43.442975326Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:34:48.462143626Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:34:48.491990082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:34:48.492081712Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:34:48.51819113Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:34:48.51824627Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:34:48.518261231Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:34:48.518271365Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:34:48.518280083Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:34:53.533995218Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:34:53.563658426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:34:53.563753189Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:34:53.585764405Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:34:53.585807521Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:34:53.585837243Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:34:53.585848142Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:34:53.585856693Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:34:58.602291676Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:34:58.631033183Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:34:58.631124178Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:34:58.65390132Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:34:58.653946Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:34:58.653960373Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:34:58.653970865Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:34:58.653980731Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:35:03.668424272Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:35:03.698321031Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:35:03.698430133Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:35:03.72084851Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:35:03.720894239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:35:03.720910067Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:35:03.720920221Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:35:03.720927547Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:35:08.737493571Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:35:08.76691999Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:35:08.767016128Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:35:08.788280173Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:35:08.788321305Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:35:08.788334701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:35:08.788344933Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:35:08.788353509Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:35:13.803387914Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:35:13.835105835Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:35:13.835200906Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:35:13.860141136Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:35:13.860183099Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:35:13.860259696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:35:13.860272652Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:35:13.860281701Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:35:18.876080514Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:35:18.9077213Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:35:18.907829829Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:35:18.928191472Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:35:18.928254787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:35:18.928270506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:35:18.92828217Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:35:18.928290701Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:35:23.943293186Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:35:23.971479901Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:35:23.971580842Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:35:23.995212288Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:35:23.995634375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:35:23.995837873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:35:23.996221221Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:35:23.996587684Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:35:29.012287543Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:35:29.040733593Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:35:29.040832888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:35:29.061656762Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:35:29.061697174Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:35:29.061710617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:35:29.061721177Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:35:29.061729694Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:35:34.077110847Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:35:34.108194899Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:35:34.108324012Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:35:34.129783158Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:35:34.129847668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:35:34.129863313Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:35:34.129874534Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:35:34.129883127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:35:39.147274288Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:35:39.17656266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:35:39.176665569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:35:39.197035239Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:35:39.197078013Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:35:39.197093784Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:35:39.197105255Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:35:39.19711443Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:35:44.212481183Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:35:44.240081746Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:35:44.240171815Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:35:44.264034933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:35:44.264076142Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:35:44.264089977Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:35:44.264101233Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:35:44.264110394Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:35:49.283277456Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:35:49.315158635Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:35:49.315278346Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:35:49.337839412Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:35:49.337883048Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:35:49.337896367Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:35:49.337909996Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:35:49.337919342Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:35:54.354271166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:35:54.380777472Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:35:54.380881057Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:35:54.403786698Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:35:54.403833445Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:35:54.403848174Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:35:54.403858652Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:35:54.40386611Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:35:59.419085862Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:35:59.447334123Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:35:59.447452895Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:35:59.470399944Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:35:59.47044183Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:35:59.470455837Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:35:59.470466542Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:35:59.470476449Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:36:04.487186981Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:36:04.517396716Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:36:04.517493292Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:36:04.539726752Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:36:04.539773663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:36:04.539787343Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:36:04.539825863Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:36:04.539835702Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:36:09.560519697Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:36:09.588713164Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:36:09.588806545Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:36:09.611290322Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:36:09.611338371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:36:09.611352058Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:36:09.611381917Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:36:09.611391777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:36:14.630294143Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:36:14.658122243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:36:14.658219373Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:36:14.677847831Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:36:14.677893829Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:36:14.677910502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:36:14.677922742Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:36:14.677932652Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:36:19.696085525Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:36:19.726829675Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:36:19.726920732Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:36:19.746979712Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:36:19.747042172Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:36:19.747057815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:36:19.747068483Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:36:19.747077171Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:36:24.764550545Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:36:24.794576863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:36:24.794699902Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:36:24.820924654Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:36:24.820967341Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:36:24.820982444Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:36:24.820993019Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:36:24.821002184Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:36:29.837960488Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:36:29.869097523Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:36:29.869201307Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:36:29.892987544Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:36:29.893027867Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:36:29.893042417Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:36:29.893078163Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:36:29.893088135Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:36:34.911503661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:36:34.941159446Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:36:34.941290315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:36:34.966132931Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:36:34.966176314Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:36:34.966190831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:36:34.966200574Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:36:34.966209084Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:36:39.981476212Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:36:40.01376587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:36:40.013887031Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:36:40.034761296Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:36:40.034804849Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:36:40.03482015Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:36:40.03483159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:36:40.034841435Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:36:45.054019392Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:36:45.082683302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:36:45.082785307Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:36:45.104260547Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:36:45.104317125Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:36:45.104331584Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:36:45.104341212Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:36:45.104349883Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:36:50.123622927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:36:50.153439108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:36:50.153541559Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:36:50.175249774Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:36:50.175291399Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:36:50.175307079Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:36:50.175319361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:36:50.175330311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:36:55.193332147Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:36:55.220147236Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:36:55.220258061Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:36:55.242966891Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:36:55.243014467Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:36:55.24303174Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:36:55.243042497Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:36:55.243051848Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:37:00.263537945Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:37:00.297125418Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:37:00.297265222Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:37:00.31883279Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:37:00.318879382Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:37:00.318895087Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:37:00.318906273Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:37:00.318915678Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:37:05.337536704Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:37:05.368117617Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:37:05.368228604Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:37:05.389936247Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:37:05.390326162Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:37:05.390347151Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:37:05.39036018Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:37:05.390371661Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:37:10.413274816Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:37:10.441509866Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:37:10.44161722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:37:10.46334185Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:37:10.463396775Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:37:10.463411702Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:37:10.463421889Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:37:10.463430414Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:37:15.479232087Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:37:15.509155952Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:37:15.509318937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:37:15.530125928Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:37:15.530170274Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:37:20.551263678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:37:20.582018516Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:37:20.582131979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:37:20.603011933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:37:20.603053413Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:37:20.603067362Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:37:20.60307822Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:37:20.603088482Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:37:25.619527362Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:37:25.65092688Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:37:25.651025371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:37:25.675651407Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:37:25.675703371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:37:25.675717604Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:37:25.675729613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:37:25.675739866Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:37:30.694322356Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:37:30.723421733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:37:30.723519563Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:37:30.743864639Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:37:30.743909092Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:37:30.743921932Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:37:30.743955959Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:37:30.743965358Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:37:35.759379417Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:37:35.790220787Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:37:35.790349454Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:37:35.811434983Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:37:35.811478319Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:37:35.811491761Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:37:35.811502204Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:37:35.811512897Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:37:40.832963915Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:37:40.864727015Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:37:40.864848588Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:37:40.88540331Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:37:40.885446698Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:37:40.885460475Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:37:40.885472967Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:37:45.901128573Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:37:45.930751322Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:37:45.93086341Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:37:45.954162362Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:37:45.954205077Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:37:45.954218705Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:37:45.954277755Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:37:45.954288056Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:37:50.972274843Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:37:51.003333409Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:37:51.003454406Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:37:51.026453334Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:37:51.02649487Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:37:51.026508937Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:37:51.02652843Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:37:51.026537154Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:37:56.043231671Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:37:56.075193313Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:37:56.075397812Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:37:56.095617093Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:37:56.096003994Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:37:56.096026702Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:37:56.096048322Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:37:56.096059748Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:38:01.113494251Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:38:01.143628795Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:38:01.144148322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:38:01.172873356Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:38:01.172917766Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:38:01.172932941Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:38:01.17294418Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:38:01.17295386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:38:06.187177201Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:38:06.217919759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:38:06.218032521Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:38:06.241107073Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:38:06.241160609Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:38:06.241176197Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:38:06.241188558Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:38:06.241197527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:38:11.258296999Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:38:11.28622693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:38:11.286334306Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:38:11.307526464Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:38:11.307578103Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:38:11.307593079Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:38:11.307603509Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:38:11.307614118Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:38:16.324128102Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:38:16.354430861Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:38:16.354555049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:38:16.374429644Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:38:21.388624807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:38:21.417578089Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:38:21.417688119Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:38:21.441810157Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:38:21.441850775Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:38:21.441864083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:38:21.441875007Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:38:21.44188405Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:38:26.459928374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:38:26.492746677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:38:26.492866356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:38:26.520054279Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:38:26.520603848Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:38:26.520628962Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:38:26.520642099Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:38:26.520653174Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:38:31.534485873Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:38:31.562784386Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:38:31.562894058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:38:31.586568662Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:38:31.586612216Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:38:31.586625734Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:38:31.586635812Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:38:31.586646494Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:38:36.601955362Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:38:36.632201971Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:38:36.632298161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:38:36.657096653Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:38:36.657142659Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:38:36.657157485Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:38:36.65716912Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:38:36.657178659Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:38:41.676870279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:38:41.706788054Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:38:41.706889498Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:38:41.728062313Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:38:41.728110734Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:38:41.728125319Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:38:41.728138028Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:38:41.728147262Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:38:46.74474066Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:38:46.775016078Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:38:46.775116941Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:38:46.795727583Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:38:46.795769654Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:38:46.795784875Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:38:46.795796042Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:38:46.79580549Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:38:51.81188646Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:38:51.839663255Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:38:51.839756987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:38:51.864380837Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:38:51.864496141Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:38:51.864515363Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:38:51.864525719Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:38:51.864533905Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:38:56.881146968Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:38:56.913079138Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:38:56.913199494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:38:56.937960616Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:38:56.938306942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:38:56.938328887Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:38:56.93834125Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:38:56.938350547Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:39:01.956991818Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:39:02.021935227Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:39:02.022077228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:39:02.062607356Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:39:02.062659224Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:39:02.062673867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:39:02.062684713Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:39:02.062693151Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:39:07.076269663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:39:07.108230451Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:39:07.108334453Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:39:07.133412279Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:39:07.133462868Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:39:07.133477782Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:39:07.133490345Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:39:07.133501003Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:39:12.152395191Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:39:12.182335112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:39:12.182449492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:39:12.203206832Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:39:12.203261266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:39:12.203276525Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:39:12.203286971Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:39:12.203295653Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:39:17.223410477Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:39:17.251434044Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:39:17.251547016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:39:17.276149855Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:39:17.276192525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:39:17.276206064Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:39:17.276216389Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:39:17.276224865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:39:22.298302868Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:39:22.330222495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:39:22.330739191Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:39:22.351883693Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:39:22.351927969Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:39:22.351941456Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:39:22.351952633Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:39:27.373266021Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:39:27.402153395Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:39:27.40227407Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:39:27.426720252Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:39:27.426773265Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:39:27.426788085Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:39:27.426798119Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:39:27.426807957Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:39:32.442406531Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:39:32.473788112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:39:32.473899701Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:39:32.497688257Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:39:32.497730575Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:39:32.497745656Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:39:32.497757848Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:39:32.49776678Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:39:37.511817361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:39:37.545951692Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:39:37.546043033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:39:37.570206699Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:39:37.570279041Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:39:37.570295622Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:39:37.570306402Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:39:37.570315708Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:39:42.589305446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:39:42.618133643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:39:42.61822438Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:39:42.641547215Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:39:42.641589481Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:39:42.64160285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:39:42.641614305Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:39:42.641623827Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:39:47.658322678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:39:47.688530478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:39:47.6886468Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:39:47.709081646Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:39:47.709122782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:39:47.709137309Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:39:47.709148367Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:39:47.709157398Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:39:52.730264246Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:39:52.759073016Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:39:52.759212573Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:39:52.786324687Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:39:52.786383275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:39:52.786397764Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:39:52.786407329Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:39:52.786415942Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:39:57.802268171Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:39:57.830127347Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:39:57.830266218Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:39:57.858525622Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:39:57.8585728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:39:57.858587545Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:39:57.858598284Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:39:57.858608686Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:40:02.881044606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:40:02.914031478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:40:02.914129701Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:40:02.933799072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:40:02.933845342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:40:02.93386013Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:40:02.933873222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:40:02.933882537Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:40:07.950687598Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:40:07.979457931Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:40:07.979567701Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:40:08.001788868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:40:08.001835963Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:40:08.001852462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:40:08.001864354Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:40:08.001873586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:40:13.022311184Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:40:13.05214098Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:40:13.052267345Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:40:13.073872669Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:40:13.07391747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:40:13.073930819Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:40:13.07394198Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:40:13.07395207Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:40:18.087762035Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:40:18.117451086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:40:18.117544562Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:40:18.138087242Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:40:18.1381316Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:40:18.138145365Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:40:18.13815591Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:40:18.138165778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:40:23.151511806Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:40:23.181482363Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:40:23.181598811Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:40:23.205894025Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:40:23.205936506Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:40:23.205950574Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:40:23.205961751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:40:23.205971524Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:40:28.224168235Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:40:28.254124508Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:40:28.254224223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:40:28.276660189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:40:28.276705144Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:40:28.276720119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:40:28.276731145Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:40:28.27674061Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:40:33.29287559Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:40:33.322512202Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:40:33.322647144Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:40:33.347368527Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:40:33.347401988Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:40:33.347412172Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:40:33.347419789Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:40:33.34742715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:40:38.36555797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:40:38.394330157Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:40:38.394424522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:40:38.419178447Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:40:38.419225306Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:40:38.419254017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:40:38.419265705Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:40:38.419275556Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:40:43.437945653Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:40:43.465581927Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:40:43.465673898Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:40:43.488390102Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:40:43.488482238Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:40:43.488501154Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:40:43.488544461Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:40:43.488554877Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:40:48.503626524Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:40:48.534506404Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:40:48.534637352Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:40:48.5549204Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:40:48.554959592Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:40:48.554972584Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:40:48.554983995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:40:48.554992653Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:40:53.572272452Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:40:53.600088395Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:40:53.600192108Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:40:53.622751479Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:40:53.622795782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:40:58.639182604Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:40:58.669537686Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:40:58.669631963Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:40:58.691942493Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:40:58.691984755Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:40:58.692014687Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:40:58.692026072Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:40:58.692035102Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:41:03.708519771Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:41:03.739401218Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:41:03.739515628Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:41:03.759936997Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:41:03.759981341Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:41:03.76003275Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:41:03.760064633Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:41:03.760074667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:41:08.778629226Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:41:08.808955801Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:41:08.809061699Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:41:08.831593712Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:41:08.831638277Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:41:08.83165243Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:41:08.831663602Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:41:08.83167386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:41:13.84810749Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:41:13.876903025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:41:13.877025028Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:41:13.897747784Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:41:13.897794507Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:41:13.89781013Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:41:13.897821658Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:41:18.918372583Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:41:18.949679259Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:41:18.949787532Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:41:18.973912789Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:41:18.973954129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:41:18.973966743Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:41:18.973995259Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:41:18.974004634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:41:23.99233139Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:41:24.020779643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:41:24.020879282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:41:24.044853729Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:41:24.044910673Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:41:24.044925386Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:41:24.044937403Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:41:24.044946151Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:41:29.063972065Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:41:29.091771389Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:41:29.091874569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:41:29.114044728Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:41:29.114088212Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:41:29.114102581Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:41:29.114114735Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:41:29.114124216Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:41:34.129322505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:41:34.158340997Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:41:34.158448442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:41:34.183379241Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:41:34.183436519Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:41:34.183451535Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:41:34.183461109Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:41:34.183469355Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:41:39.199921785Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:41:39.229419061Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:41:39.229514311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:41:39.253641641Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:41:39.253684271Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:41:39.253699924Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:41:39.253723289Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:41:39.253732376Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:41:44.270612385Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:41:44.301472619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:41:44.301569882Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:41:44.322812664Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:41:44.322856865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:41:44.322870293Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:41:44.322913732Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:41:44.322923118Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:41:49.340724173Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:41:49.368105956Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:41:49.368212772Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:41:49.394011222Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:41:49.394054369Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:41:49.394067914Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:41:49.394078353Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:41:49.394088205Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:41:54.41074607Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:41:54.437343734Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:41:54.437434376Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:41:54.459782786Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:41:54.459828361Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:41:54.459842889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:41:54.45985344Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:41:54.459862614Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:41:59.475348901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:41:59.505032605Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:41:59.505122278Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:41:59.529137317Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:41:59.529177469Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:41:59.529210745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:41:59.529220793Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:41:59.529229842Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:42:04.543605968Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:42:04.573634013Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:42:04.573739365Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:42:04.599534258Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:42:04.599576878Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:42:04.599592945Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:42:04.599604382Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:42:04.599613139Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:42:09.620315163Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:42:09.651513607Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:42:09.65160684Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:42:09.679360441Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:42:09.679404653Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:42:09.679418958Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:42:09.679428968Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:42:09.679437064Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:42:14.697289005Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:42:14.725298531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:42:14.725411475Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:42:14.748724769Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:42:14.748769793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:42:14.748784474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:42:14.748794805Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:42:14.748803457Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:42:19.764278049Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:42:19.795209923Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:42:19.795338323Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:42:19.819160789Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:42:19.81920773Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:42:19.81922293Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:42:19.819257928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:42:19.81927099Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:42:24.837901593Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:42:24.864611095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:42:24.864724927Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:42:24.884767847Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:42:24.884827873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:42:24.884842245Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:42:24.884853157Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:42:24.884861919Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:42:29.904264583Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:42:29.934321664Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:42:29.934414058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:42:29.956060547Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:42:29.956110622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:42:29.956125602Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:42:29.956159248Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:42:29.956168547Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:42:34.973452737Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:42:35.00316747Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:42:35.003316524Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:42:35.027647656Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:42:35.027691496Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:42:35.027706148Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:42:35.027727924Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:42:35.027736583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:42:40.046465008Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:42:40.077338865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:42:40.077466174Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:42:40.098465605Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:42:40.098522892Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:42:40.098537078Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:42:40.098547999Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:42:40.098558434Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:42:45.113377782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:42:45.145132255Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:42:45.145227943Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:42:45.165963813Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:42:45.166018001Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:42:45.166033376Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:42:45.166044019Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:42:45.16605244Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:42:50.183489799Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:42:50.213055031Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:42:50.213150138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:42:50.23604925Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:42:50.236090446Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:42:50.236104433Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:42:50.236114541Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:42:50.23612269Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:42:55.251492574Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:42:55.281789909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:42:55.281888975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:42:55.303875673Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:42:55.303934478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:42:55.303949981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:42:55.303959611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:42:55.303967852Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:43:00.317434897Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:43:00.347129589Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:43:00.347267121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:43:00.372151641Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:43:00.372193349Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:43:00.372209072Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:43:00.372269392Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:43:00.372279739Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:43:05.39027922Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:43:05.417740669Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:43:05.417859564Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:43:05.436106634Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:43:05.436169643Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:43:05.436184845Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:43:05.436193687Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:43:05.436202075Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:43:10.4562168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:43:10.486783803Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:43:10.486915052Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:43:10.509586432Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:43:10.509643821Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:43:10.509660005Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:43:10.509670835Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:43:10.509679575Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:43:15.524120823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:43:15.557316081Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:43:15.557454142Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:43:15.582177226Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:43:15.582252995Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:43:15.582267795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:43:15.582289283Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:43:15.582298392Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:43:20.603097036Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:43:20.632902497Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:43:20.633011082Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:43:20.65852821Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:43:20.658569321Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:43:20.65860875Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:43:20.658618713Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:43:20.65862707Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:43:25.675849438Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:43:25.706087428Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:43:25.706223708Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:43:25.726336551Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:43:25.726377801Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:43:25.726391666Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:43:25.726401474Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:43:25.726410335Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:43:30.74376782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:43:30.772139369Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:43:30.772270176Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:43:30.793104929Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:43:30.793174777Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:43:30.793188543Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:43:30.793197758Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:43:30.793205689Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:43:35.810443517Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:43:35.840250882Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:43:35.840372828Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:43:35.862455754Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:43:35.862501275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:43:35.86251576Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:43:35.862526174Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:43:35.862537133Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:43:40.881013289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:43:40.91125128Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:43:40.9113628Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:43:40.935669172Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:43:40.935717485Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:43:40.935733634Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:43:40.935744211Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:43:40.935751445Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:43:45.953916749Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:43:45.983251183Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:43:45.983345357Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:43:46.008047604Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:43:46.008093329Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:43:46.00810815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:43:46.008119906Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:43:46.008129463Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:43:51.020644816Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:43:51.049315995Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:43:51.049430057Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:43:51.071259835Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:43:51.071304177Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:43:51.071318649Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:43:51.071327688Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:43:51.071337415Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:43:56.085895374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:43:56.117365228Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:43:56.117492301Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:43:56.14059198Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:43:56.140635148Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:43:56.140649642Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:43:56.1406609Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:43:56.140669915Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:44:01.163955591Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:44:01.194659266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:44:01.194778373Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:44:01.219360389Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:44:01.219402801Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:44:01.219477751Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:44:01.21950503Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:44:01.219515106Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:44:06.235773765Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:44:06.265480796Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:44:06.265597359Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:44:06.290797184Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:44:06.290840706Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:44:06.290854603Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:44:06.290867121Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:44:06.290876781Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:44:11.308863458Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:44:11.339770382Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:44:11.339872168Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:44:11.364069802Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:44:11.364117692Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:44:11.364157588Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:44:11.364170156Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:44:11.364181028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:44:16.38926732Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:44:16.417861731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:44:16.417959523Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:44:16.443720981Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:44:16.443784105Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:44:21.467170509Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:44:21.494454108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:44:21.494573626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:44:21.517056053Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:44:21.517097611Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:44:21.517112016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:44:21.517123291Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:44:21.517132925Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:44:26.536263261Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:44:26.567187227Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:44:26.567290596Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:44:26.592185072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:44:26.592227168Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:44:26.592292917Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:44:26.59230466Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:44:26.592314052Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:44:31.609261116Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:44:31.641274007Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:44:31.641381512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:44:31.664228142Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:44:31.664288655Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:44:31.66430274Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:44:31.664312194Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:44:31.664322057Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:44:36.678133747Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:44:36.707017302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:44:36.707132807Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:44:36.73158245Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:44:36.73162296Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:44:36.731636898Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:44:36.731648165Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:44:36.731656136Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:44:41.748921895Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:44:41.778477132Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:44:41.778590611Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:44:41.80337608Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:44:41.803671485Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:44:41.803692607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:44:41.803713639Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:44:41.803723678Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:44:46.823268868Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:44:46.852262384Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:44:46.852403789Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:44:46.87987498Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:44:46.879931771Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:44:46.879947694Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:44:46.879959158Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:44:46.879968235Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:44:51.904079546Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:44:51.933034129Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:44:51.933136418Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:44:51.959496007Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:44:51.959539965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:44:51.959586725Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:44:51.959598366Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:44:51.959606849Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:44:56.97694753Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:44:57.005573714Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:44:57.005674012Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:44:57.030014791Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:44:57.030061178Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:44:57.030076759Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:44:57.030088685Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:44:57.030098064Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:45:02.051478158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:45:02.088670917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:45:02.088879445Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:45:02.130626477Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:45:02.130677769Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:45:02.1306947Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:45:02.130705039Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:45:02.130712233Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:45:07.146544896Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:45:07.180031307Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:45:07.180127473Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:45:07.205226173Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:45:07.205706459Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:45:07.205899484Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:45:07.20604216Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:45:07.206174341Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:45:12.224489729Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:45:12.253445865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:45:12.253581476Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:45:12.280343886Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:45:12.280398179Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:45:12.280411887Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:45:12.280421753Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:45:12.280729558Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T23:45:12.280839388Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:45:17.301314628Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:45:17.328844204Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:45:17.32896183Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:45:17.350006902Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:45:17.350065495Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:45:17.35008104Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:45:17.350090557Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:45:17.350099195Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:45:22.37232172Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:45:22.401489748Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:45:22.401604191Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:45:22.421386062Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:45:22.421807614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:45:22.421832893Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:45:22.421844963Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:45:22.421856938Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:45:27.440302348Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:45:27.466415712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:45:27.466532595Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:45:27.489601195Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:45:27.489664692Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:45:27.489680655Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:45:27.489690178Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:45:27.489698711Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:45:32.504848236Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:45:32.537093315Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:45:32.537196036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:45:32.55954658Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:45:32.559589362Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:45:32.559628058Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:45:32.559637958Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:45:32.559649191Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:45:37.574994134Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:45:37.605488925Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:45:37.605582814Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:45:37.628934383Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:45:37.628982066Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:45:37.628997176Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:45:37.629007873Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:45:37.629018236Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:45:42.650815027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:45:42.681032301Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:45:42.681147696Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:45:42.706131306Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:45:42.706172706Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:45:42.706206142Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:45:42.70621741Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:45:42.706226279Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:45:47.729314037Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:45:47.760129021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:45:47.760225985Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:45:47.786042826Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:45:47.786092768Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:45:47.786128137Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:45:47.786140177Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:45:47.786148824Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:45:52.808307843Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:45:52.839363905Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:45:52.839457707Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:45:52.86745412Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:45:52.867501842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:45:52.867517542Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:45:52.867528289Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:45:52.867538761Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:45:57.880005712Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:45:57.90978187Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:45:57.909884471Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:45:57.934413983Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:45:57.93445688Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:45:57.934494905Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:45:57.934523557Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:45:57.934533723Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:46:02.954342297Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:46:02.983558679Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:46:02.983695886Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:46:03.013363306Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:46:03.013407789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:46:03.013431846Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:46:03.013443518Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:46:03.013453097Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:46:08.032904671Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:46:08.0629643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:46:08.063063039Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:46:08.084424936Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:46:08.084562848Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:46:08.084578266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:46:08.084589713Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:46:08.08459879Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:46:13.099978466Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:46:13.129781659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:46:13.129906692Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:46:13.154333346Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:46:13.154377761Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:46:13.154394572Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:46:13.154406049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:46:13.154416065Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:46:18.174524997Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:46:18.203532937Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:46:18.20364321Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:46:18.227449764Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:46:18.227487438Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:46:18.227521867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:46:18.227567664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:46:18.227577187Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:46:23.244547172Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:46:23.274355127Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:46:23.274477134Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:46:23.296836609Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:46:23.296881284Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:46:23.296895835Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:46:23.2969184Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:46:23.29692757Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:46:28.312705853Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:46:28.343441274Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:46:28.343562483Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:46:28.364629858Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:46:28.364671462Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:46:28.364685239Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:46:28.364697867Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:46:28.364707325Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:46:33.38127128Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:46:33.410705445Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:46:33.410812454Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:46:33.43106971Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:46:33.431113005Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:46:33.431172651Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:46:33.431184621Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:46:33.431194512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:46:38.453027898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:46:38.48263374Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:46:38.48272684Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:46:38.504363203Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:46:38.504406754Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:46:38.504510151Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:46:38.504523026Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:46:38.504532708Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:46:43.519007906Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:46:43.549787385Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:46:43.54991223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:46:43.571766069Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:46:43.571809352Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:46:43.571822682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:46:43.571832991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:46:43.571842522Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:46:48.590445055Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:46:48.617655769Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:46:48.617766817Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:46:48.641223857Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:46:48.641287701Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:46:48.641303232Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:46:53.655415548Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:46:53.683376583Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:46:53.683468045Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:46:53.709428722Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:46:53.709473008Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:46:53.709486905Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:46:53.709497356Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:46:53.709513765Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:46:58.727010328Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:46:58.758881643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:46:58.75898415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:46:58.782713596Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:46:58.782757423Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:46:58.782772558Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:46:58.782783323Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:46:58.782792325Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:47:03.800871058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:47:03.828547855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:47:03.828657594Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:47:03.853880207Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:47:03.853922941Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:47:03.853936295Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:47:03.853947248Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:47:03.853956474Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:47:08.868827398Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:47:08.896043348Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:47:08.896161445Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:47:08.921545624Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:47:08.921587029Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:47:08.921602213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:47:08.921616413Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:47:08.921626448Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:47:13.936101253Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:47:13.965075676Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:47:13.965194767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:47:13.986418753Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:47:13.986480348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:47:13.986494226Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:47:13.986506597Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:47:13.986515386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:47:19.005601576Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:47:19.035174851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:47:19.03531006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:47:19.056628588Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:47:19.056686586Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:47:19.056702469Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:47:19.056713729Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:47:19.056722615Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:47:24.072650734Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:47:24.104076766Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:47:24.104213737Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:47:24.128355931Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:47:24.128403864Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:47:24.128555697Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:47:24.128575153Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:47:24.128585342Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:47:29.147179369Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:47:29.176704013Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:47:29.176810777Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:47:29.202610538Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:47:29.202654338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:47:29.202667792Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:47:29.202678758Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:47:29.202689539Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:47:34.219351419Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:47:34.247356263Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:47:34.247477856Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:47:34.268024101Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:47:34.268067019Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:47:34.268081387Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:47:34.268092297Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:47:34.268101316Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:47:39.283011002Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:47:39.312928813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:47:39.313062428Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:47:39.3377718Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:47:39.337812328Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:47:39.337826185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:47:39.337837466Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:47:39.337847057Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:47:44.354290529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:47:44.384776394Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:47:44.384885033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:47:44.410100757Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:47:44.410153429Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:47:44.41016747Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:47:44.410179727Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:47:44.41018881Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:47:49.428698831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:47:49.459847346Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:47:49.459964121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:47:49.480620222Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:47:49.480662771Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:47:49.480676332Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:47:49.480688411Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:47:49.480697368Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:47:54.49777323Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:47:54.526523349Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:47:54.526644358Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:47:54.549515534Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:47:54.549561132Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:47:54.549585019Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:47:54.549595534Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:47:54.549605022Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:47:59.564549912Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:47:59.591426377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:47:59.591543757Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:47:59.611957415Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:47:59.611999493Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:47:59.612012998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:47:59.612024434Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:47:59.612034215Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:48:04.629390964Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:48:04.661372207Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:48:04.661466048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:48:04.687285814Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:48:04.687326457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:48:04.687340897Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:48:04.687352043Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:48:04.687360912Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:48:09.706273546Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:48:09.735967873Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:48:09.736057316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:48:09.760344221Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:48:09.760387582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:48:09.76040257Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:48:09.760469102Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:48:09.760479511Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:48:14.775388856Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:48:14.806704186Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:48:14.806796299Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:48:14.830293322Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:48:14.830334412Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:48:14.830349283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:48:14.830359845Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:48:14.830368687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:48:19.849015768Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:48:19.878616635Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:48:19.8788051Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:48:19.898795319Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:48:19.898853991Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:48:19.898868339Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:48:19.898879391Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:48:19.89888747Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:48:24.9172865Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:48:24.945728001Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:48:24.945819082Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:48:24.968902673Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:48:24.969291487Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:48:24.969314248Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:48:24.96932699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:48:24.969338316Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:48:29.988508054Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:48:30.017777625Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:48:30.017898744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:48:30.039798517Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:48:30.039843883Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:48:30.039858648Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:48:30.039871653Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:48:30.039881209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:48:35.056711487Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:48:35.087119103Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:48:35.087208285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:48:35.108866696Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:48:35.108908422Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:48:35.108939639Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:48:35.108949319Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:48:35.108967763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:48:40.128265531Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:48:40.158625685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:48:40.158734168Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:48:40.181754052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:48:40.181815913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:48:40.181830495Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:48:40.181841229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:48:40.181850087Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:48:45.201304802Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:48:45.231863749Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:48:45.231956369Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:48:45.252158639Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:48:45.252202889Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:48:45.252216967Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:48:45.252229543Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:48:45.252249669Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:48:50.271477491Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:48:50.297069013Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:48:50.29718427Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:48:50.319175476Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:48:50.319219278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:48:50.319246505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:48:50.319283234Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:48:50.319292504Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:48:55.335276512Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:48:55.365061212Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:48:55.365150918Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:48:55.392672213Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:48:55.392727352Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:48:55.392743361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:48:55.392753542Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:48:55.392771196Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:49:00.4119928Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:49:00.441788819Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:49:00.441905597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:49:00.465950893Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:49:00.466005419Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:49:00.466022278Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:49:00.466031816Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:49:00.466040694Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:49:05.486524958Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:49:05.515481442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:49:05.515573226Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:49:05.535844119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:49:05.535885897Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:49:05.535913782Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:49:05.535925196Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:49:05.535933827Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:49:10.553275876Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:49:10.58273719Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:49:10.582842257Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:49:10.603046401Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:49:10.603101891Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:49:10.603116083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:49:10.603126161Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:49:10.603134129Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:49:15.620303051Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:49:15.648761273Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:49:15.648854612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:49:15.671617911Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:49:15.671664683Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:49:15.671678072Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:49:15.67168916Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:49:15.67169778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:49:20.691757675Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:49:20.724636847Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:49:20.724746069Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:49:20.747764272Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:49:20.747818971Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:49:20.74783583Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:49:20.74784639Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:49:20.747854497Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:49:25.76684315Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:49:25.799133947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:49:25.799225895Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:49:25.820674625Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:49:25.82072056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:49:25.820735135Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:49:25.820744287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:49:25.820753076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:49:30.839384295Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:49:30.868894306Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:49:30.8689855Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:49:30.891709512Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:49:30.891750493Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:49:30.89176467Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:49:30.891775915Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:49:30.891785694Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:49:35.910479062Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:49:35.940740491Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:49:35.940871591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:49:35.963645712Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:49:35.963688445Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:49:35.963701293Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:49:35.963712814Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:49:35.963722001Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:49:40.985036733Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:49:41.014421289Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:49:41.01454321Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:49:41.039799059Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:49:41.039845133Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:49:41.039861125Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:49:41.039872093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:49:41.039881781Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:49:46.056601146Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:49:46.087658341Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:49:46.087755252Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:49:46.109883927Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:49:46.109930562Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:49:46.109944962Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:49:46.109955883Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:49:46.109966101Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:49:51.129440623Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:49:51.159808918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:49:51.159912184Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:49:51.182916021Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:49:51.182975623Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:49:51.182991816Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:49:51.183002709Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:49:51.183011123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:49:56.202073748Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:49:56.231485771Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:49:56.23158454Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:49:56.252751756Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:49:56.252814477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:49:56.252829482Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:49:56.252840369Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:49:56.25284914Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:50:01.279150989Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:50:01.356427644Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:50:01.356606513Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:50:01.43459713Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:50:01.434675945Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:50:01.434690876Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:50:01.43470312Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:50:01.43471242Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:50:06.45130132Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:50:06.480618657Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:50:06.480725107Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:50:06.501461934Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:50:06.501505844Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:50:06.50152234Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:50:06.501543828Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:50:06.501553024Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:50:11.519168086Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:50:11.550259286Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:50:11.550354635Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:50:11.571145052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:50:11.571188915Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:50:11.571202759Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:50:11.571214351Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:50:11.571223849Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:50:16.590278952Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:50:16.61939392Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:50:16.61951189Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:50:16.641275971Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:50:16.641334541Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:50:16.641350657Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:50:16.641361931Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:50:16.641497377Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T23:50:16.641806167Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-01T23:50:16.641904193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:50:21.662272382Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:50:21.691398401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:50:21.691514135Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:50:21.71489984Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:50:21.714954802Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:50:21.714970573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:50:21.71498155Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:50:21.714990425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:50:26.729980609Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:50:26.757355114Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:50:26.757463864Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:50:26.776765324Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:50:26.776806535Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:50:26.776823622Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:50:26.776834147Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:50:26.77684339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:50:31.792543438Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:50:31.822809989Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:50:31.822912366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:50:31.847177874Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:50:31.847222599Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:50:31.847249056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:50:31.847259446Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:50:31.847268174Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:50:36.861670643Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:50:36.88976883Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:50:36.889868269Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:50:36.91183537Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:50:36.911881084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:50:36.911894242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:50:36.911904306Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:50:36.911914264Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:50:41.931265619Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:50:41.959916966Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:50:41.960044827Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:50:41.982544901Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:50:41.98258864Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:50:41.982604039Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:50:41.982615963Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:50:41.982625152Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:50:47.003323219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:50:47.031635109Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:50:47.031757913Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:50:47.057031462Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:50:47.057088608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:50:47.057104298Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:50:47.057139805Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:50:47.05714889Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:50:52.076011557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:50:52.107114316Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:50:52.107206347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:50:52.132440462Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:50:52.132500809Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:50:52.132515953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:50:52.132529549Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:50:52.132538983Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:50:57.151839606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:50:57.181696046Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:50:57.181806443Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:50:57.204620224Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:50:57.204662709Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:50:57.204675769Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:50:57.204687067Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:50:57.20469684Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:51:02.226285915Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:51:02.259970246Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:51:02.260106768Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:51:02.283900034Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:51:02.283958863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:51:02.283973593Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:51:02.284031454Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:51:02.284041454Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:51:07.302380137Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:51:07.333432984Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:51:07.333524405Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:51:07.354788975Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:51:07.354826863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:51:07.354841243Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:51:07.354870693Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:51:07.354892633Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:51:12.374171421Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:51:12.402758092Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:51:12.402880023Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:51:12.423168917Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:51:12.423210669Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:51:12.423251247Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:51:12.423261353Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:51:12.423269385Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:51:17.436538565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:51:17.467550263Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:51:17.467650302Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:51:17.494627849Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:51:17.494670642Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:51:17.494684221Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:51:17.494694714Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:51:17.494703897Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:51:22.511655095Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:51:22.54259267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:51:22.542681822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:51:22.563851054Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:51:22.563898269Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:51:22.563912234Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:51:22.563923414Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:51:22.56393371Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:51:27.580282976Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:51:27.609434555Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:51:27.609548266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:51:27.632679155Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:51:27.632720483Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:51:27.63273463Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:51:27.632744052Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:51:27.63275365Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:51:32.656287758Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:51:32.685271112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:51:32.685383693Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:51:32.708945186Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:51:32.709371782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:51:32.709396235Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:51:32.709409606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:51:32.709421166Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:51:37.724780482Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:51:37.75332646Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:51:37.753443307Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:51:37.774885463Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:51:37.774928857Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:51:42.798273681Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:51:42.828309436Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:51:42.828517392Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:51:42.853005469Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:51:42.853049826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:51:42.853065651Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:51:42.853076391Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:51:42.853085654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:51:47.875664904Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:51:47.906224282Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:51:47.9067003Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:51:47.9300797Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:51:47.930124031Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:51:47.930138243Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:51:47.930149534Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:51:47.930165074Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:51:52.949752854Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:51:52.979538573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:51:52.979654836Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:51:53.000792404Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:51:53.000835074Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:51:53.00084945Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:51:53.000884679Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:51:53.000893297Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:51:58.01438334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:51:58.045476499Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:51:58.045599363Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:51:58.070447859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:51:58.070491782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:51:58.070506568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:51:58.07051877Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:51:58.07052838Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:52:03.090849459Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:52:03.118262938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:52:03.118358377Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:52:03.138793774Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:52:03.138837543Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:52:03.138868919Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:52:03.138905553Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:52:03.138914205Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:52:08.153466543Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:52:08.18297372Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:52:08.183084832Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:52:08.206794457Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:52:08.206835394Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:52:08.20684948Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:52:08.206888022Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:52:08.206896748Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:52:13.223933898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:52:13.253814578Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:52:13.253915146Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:52:13.274406063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:52:13.274450621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:52:13.274465817Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:52:13.274476594Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:52:13.274485867Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:52:18.290339268Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:52:18.321318Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:52:18.321441499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:52:18.345315846Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:52:18.3453717Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:52:18.345386987Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:52:18.345452741Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:52:18.345463786Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:52:23.361543749Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:52:23.388709542Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:52:23.388810629Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:52:23.41225033Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:52:23.412296846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:52:23.41231Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:52:23.412320538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:52:23.412330562Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:52:28.425847329Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:52:28.45522425Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:52:28.455687277Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:52:28.47886953Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:52:28.478932385Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:52:28.478947513Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:52:28.47907987Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T23:52:28.47917211Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:52:28.479187475Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:52:33.494088217Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:52:33.52399794Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:52:33.524096744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:52:33.548667492Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:52:33.548711773Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:52:38.564382485Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:52:38.59458297Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:52:38.594675707Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:52:38.615759699Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:52:38.615801154Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:52:38.615825228Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:52:38.615858202Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:52:38.615867267Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:52:43.632304716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:52:43.661790231Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:52:43.661882573Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:52:43.682305666Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:52:43.682385311Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:52:43.682402421Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:52:43.682414962Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:52:43.682425363Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:52:48.702868123Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:52:48.732698745Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:52:48.732831401Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:52:48.754836303Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:52:48.754878461Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:52:48.754893774Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:52:48.754904672Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:52:48.754914259Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:52:53.772550748Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:52:53.80248648Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:52:53.802596497Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:52:53.826865309Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:52:53.826909249Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:52:53.826923253Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:52:53.826934012Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:52:53.8269437Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:52:58.8423859Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:52:58.873910852Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:52:58.874000335Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:52:58.897904807Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:52:58.897949476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:52:58.897963357Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:52:58.897975162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:52:58.89798543Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:53:03.913931354Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:53:03.941839558Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:53:03.941948249Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:53:03.967591113Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:53:03.967651167Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:53:03.967716626Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:53:03.967728327Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:53:03.967737548Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:53:08.985980546Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:53:09.016727651Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:53:09.016815412Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:53:09.038440157Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:53:09.038500587Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:53:09.03851534Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:53:09.038526472Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:53:09.038536548Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:53:14.057816349Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:53:14.088891722Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:53:14.088988123Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:53:14.111935534Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:53:14.111981122Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:53:14.111999026Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:53:14.112010048Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:53:14.112020371Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:53:19.13029596Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:53:19.157834815Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:53:19.157983908Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:53:19.181912979Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:53:19.181952752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:53:19.181966665Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:53:19.181979087Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:53:19.181988768Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:53:24.196820898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:53:24.228861801Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:53:24.228967828Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:53:24.255160919Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:53:24.255218953Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:53:24.255246686Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:53:24.255280646Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:53:24.255289479Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:53:29.27229837Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:53:29.303437587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:53:29.30353425Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:53:29.32367108Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:53:29.3237149Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:53:29.323728803Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:53:29.323739974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:53:29.323749161Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:53:34.336537743Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:53:34.367687513Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:53:34.367850201Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:53:34.392099915Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:53:34.392143678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:53:34.392158627Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:53:34.392169249Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:53:34.392178659Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:53:39.409264399Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:53:39.437046749Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:53:39.437176833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:53:39.461364828Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:53:39.461405669Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:53:39.461418874Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:53:39.46142912Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:53:39.461438027Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:53:44.47824352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:53:44.508355199Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:53:44.508557959Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:53:44.532129515Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:53:44.532176142Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:53:44.532192141Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:53:44.532202671Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:53:44.5322119Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:53:49.550223977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:53:49.578294688Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:53:49.57842352Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:53:49.600058957Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:53:49.600103181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:53:49.600118869Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:53:49.600130981Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:53:49.600140847Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:53:54.618498653Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:53:54.649399086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:53:54.649489969Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:53:54.673589535Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:53:54.673629681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:53:54.673643232Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:53:54.673684434Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:53:54.67369535Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:53:59.691470651Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:53:59.721557765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:53:59.721646745Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:53:59.745349034Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:53:59.745402312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:53:59.745417731Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:53:59.745427992Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:53:59.745436607Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:54:04.763278572Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:54:04.793842762Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:54:04.793962264Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:54:04.816734837Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:54:04.816776837Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:54:04.816793016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:54:04.81680366Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:54:09.832271463Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:54:09.86239303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:54:09.862510501Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:54:09.885330734Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:54:09.885375677Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:54:09.885391004Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:54:09.885401956Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:54:09.8854121Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:54:14.900218863Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:54:14.930032741Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:54:14.930139055Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:54:14.954827852Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:54:14.954871145Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:54:14.954885241Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:54:14.954895268Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:54:14.954903402Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:54:19.973794105Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:54:20.004911941Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:54:20.005043469Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:54:20.027616096Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:54:20.027678239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:54:20.027693641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:54:20.027704469Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:54:20.027713327Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:54:25.048305376Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:54:25.077038792Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:54:25.077156731Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:54:25.100590444Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:54:25.100635009Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:54:25.100649438Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:54:25.100659924Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:54:25.10067003Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:54:30.114554502Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:54:30.144199967Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:54:30.144327485Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:54:30.166150166Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:54:30.166190174Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:54:30.166203833Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:54:30.166215536Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:54:30.166225855Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:54:35.182706157Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:54:35.21354587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:54:35.213659231Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:54:35.237297818Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:54:35.237354606Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:54:35.237371091Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:54:35.23738081Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:54:35.237389339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:54:40.255914363Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:54:40.287300585Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:54:40.287418038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:54:40.31013575Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:54:40.310197167Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:54:40.31021131Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:54:40.310220777Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:54:40.310229936Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:54:45.327176187Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:54:45.356731388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:54:45.35686434Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:54:45.37848833Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:54:45.378696533Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:54:45.378714972Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:54:45.378725889Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:54:45.378736072Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:54:50.397281552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:54:50.425798229Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:54:50.425892473Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:54:50.448318638Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:54:50.448359322Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:54:50.44837285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:54:50.448383916Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:54:50.44839297Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:54:55.46529387Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:54:55.492844331Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:54:55.49294026Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:54:55.517753654Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:54:55.517793985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:54:55.51780786Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:54:55.517818785Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:54:55.517828888Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:55:00.535303135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:55:00.565248344Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:55:00.565375708Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:55:00.585894533Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:55:00.58595182Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:55:00.585966495Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:55:00.585975789Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:55:00.585984211Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:55:05.601219603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:55:05.630179453Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:55:05.630298214Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:55:05.65155438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:55:05.651598575Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:55:05.651614286Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:55:05.651648801Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:55:05.651657727Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:55:10.670348082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:55:10.700212057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:55:10.700345768Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:55:10.724751636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:55:10.724790495Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:55:10.724806133Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:55:10.724816124Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:55:10.724825079Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:55:15.74630019Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:55:15.776255693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:55:15.776377353Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:55:15.802387991Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:55:15.802442013Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:55:15.802459075Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:55:15.802517922Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:55:15.802527641Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:55:20.823003152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:55:20.854324779Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:55:20.854414868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:55:20.874282047Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:55:20.874343849Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:55:20.874357955Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:55:20.874367999Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:55:20.874377482Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:55:25.890955431Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:55:25.920291695Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:55:25.920401596Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:55:25.944409296Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:55:25.94458042Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:55:25.944614117Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:55:25.944625436Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:55:25.944635744Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:55:30.964836445Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:55:30.994138284Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:55:30.994266916Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:55:31.018904403Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:55:31.018949763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:55:31.018963449Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:55:31.018975313Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:55:31.018986275Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:55:36.038735346Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:55:36.068340812Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:55:36.06858588Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:55:36.088788065Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:55:36.088833285Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:55:36.088864261Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:55:36.088876744Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:55:36.088885793Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:55:41.106291217Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:55:41.135753663Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:55:41.13586904Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:55:41.158305833Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:55:41.158348521Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:55:41.15836299Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:55:41.158374123Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:55:41.158383583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:55:46.174304848Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:55:46.203714742Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:55:46.20381305Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:55:46.227360564Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:55:46.227406796Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:55:46.227420035Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:55:46.227427689Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:55:46.227434421Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:55:51.248277419Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:55:51.27547763Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:55:51.275597153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:55:51.296736116Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:55:51.296789981Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:55:51.296805489Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:55:51.296815309Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:55:51.296824155Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:55:56.315257184Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:55:56.344757602Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:55:56.344865518Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:55:56.365139647Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:55:56.365182822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:55:56.36519748Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:55:56.365209969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:55:56.365218972Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:56:01.382698912Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:56:01.437596162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:56:01.43770852Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:56:01.509769759Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:56:01.509815231Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:56:06.528286504Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:56:06.555892726Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:56:06.556015716Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:56:06.578479399Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:56:06.578519081Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:56:06.578532623Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:56:06.578544226Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:56:06.578553942Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:56:11.600367849Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:56:11.626999405Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:56:11.627104717Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:56:11.64969079Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:56:11.649732277Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:56:11.649745838Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:56:11.649788522Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:56:11.649797853Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:56:16.666538292Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:56:16.695392526Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:56:16.695519907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:56:16.718898189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:56:16.718939944Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:56:16.718953556Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:56:16.71896508Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:56:16.71897481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:56:21.7355373Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:56:21.761865402Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:56:21.761991004Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:56:21.782935473Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:56:21.782977137Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:56:21.782991094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:56:21.783045728Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:56:21.783055314Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:56:26.804812549Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:56:26.832695653Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:56:26.832797269Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:56:26.857909472Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:56:26.857976461Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:56:26.85799267Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:56:26.858003599Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:56:26.858011982Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:56:26.858143373Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-01T23:56:31.879049913Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:56:31.907539013Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:56:31.907626718Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:56:31.927940471Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:56:31.928010815Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:56:31.928025262Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:56:31.928034053Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:56:31.928042157Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:56:36.942311541Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:56:36.971672677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:56:36.971780045Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:56:36.997677619Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:56:36.997717329Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:56:36.997730979Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:56:36.997742342Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:56:36.99775188Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:56:42.018001303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:56:42.046737757Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:56:42.046857233Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:56:42.067050005Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:56:42.067095131Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:56:42.06710836Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:56:42.067118605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:56:42.067129051Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:56:47.088266774Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:56:47.119109154Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:56:47.119213925Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:56:47.145569374Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:56:47.145614322Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:56:47.145630737Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:56:47.145641799Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:56:47.145651746Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:56:52.16530883Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:56:52.193461709Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:56:52.193567283Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:56:52.218534418Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:56:52.218578191Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:56:52.21859144Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:56:52.218612159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:56:52.218622138Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:56:57.237714071Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:56:57.26693484Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:56:57.267037348Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:56:57.290453144Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:56:57.290501087Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:56:57.290515555Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:56:57.290526021Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:56:57.290534797Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:57:02.311804011Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:57:02.338910292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:57:02.339027033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:57:02.360078301Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:57:02.360144509Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:57:02.360162058Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:57:02.360173087Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:57:02.360198279Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:57:07.375149338Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:57:07.405938689Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:57:07.40603058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:57:07.429951033Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:57:07.42999919Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:57:07.430012665Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:57:07.43002287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:57:07.430033641Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:57:12.449302925Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:57:12.478189767Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:57:12.478314429Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:57:12.500153091Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:57:12.500193308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:57:12.500206807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:57:12.500217826Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:57:12.500225909Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:57:17.521381314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:57:17.551131723Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:57:17.551252574Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:57:17.57484345Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:57:17.574885037Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:57:17.574898713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:57:17.574910439Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:57:17.574920378Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:57:22.597629409Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:57:22.629125306Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:57:22.629231024Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:57:22.650336106Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:57:22.650383105Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:57:22.650398035Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:57:22.650408157Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:57:22.65041712Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:57:27.667919954Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:57:27.696685621Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:57:27.696779283Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:57:27.722392054Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:57:27.722448416Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:57:27.722463467Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:57:27.722473822Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:57:27.722482285Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:57:32.74221412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:57:32.770183881Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:57:32.770308601Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:57:32.791688074Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:57:32.791739997Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:57:32.791756594Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:57:32.791821428Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:57:32.791831549Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:57:37.80531977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:57:37.838152868Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:57:37.838279245Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:57:37.86407521Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:57:37.864127885Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:57:37.864143208Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:57:37.864154944Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:57:37.864164232Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:57:42.883535938Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:57:42.915403786Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:57:42.915526048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:57:42.939596528Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:57:42.939640071Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:57:42.939655151Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:57:42.939686108Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:57:42.939695581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:57:47.962289854Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:57:47.993653732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:57:47.993747065Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:57:48.021987063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:57:48.022034935Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:57:48.022051592Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:57:48.022062935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:57:48.022072718Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:57:53.042078716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:57:53.073118634Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:57:53.073224135Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:57:53.098027986Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:57:53.098074323Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:57:53.098088101Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:57:53.098098223Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:57:53.098108226Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:57:58.114289116Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:57:58.144635529Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:57:58.144729994Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:57:58.169425645Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:57:58.169465828Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:57:58.169479735Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:57:58.16949153Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:57:58.169501399Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:58:03.184779127Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:58:03.211994587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:58:03.212116382Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:58:03.233009315Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:58:03.233056005Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:58:03.233070333Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:58:03.233081394Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:58:03.233092269Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:58:08.25227177Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:58:08.281700147Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:58:08.281794721Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:58:08.305138747Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:58:08.305201393Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:58:08.305251766Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:58:08.305262699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:58:08.305272019Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:58:13.320778141Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:58:13.350425432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:58:13.350538135Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:58:13.370294123Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:58:13.370332583Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:58:13.370346193Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:58:13.370357965Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:58:13.370368107Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:58:18.389310515Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:58:18.418825219Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:58:18.418919036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:58:18.444086047Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:58:18.44413118Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:58:18.444144597Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:58:18.444154266Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:58:18.444164123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:58:23.459002493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:58:23.489269267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:58:23.489392814Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:58:23.511622102Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:58:23.511679054Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:58:23.51169306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:58:23.511728036Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:58:23.51174538Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:58:28.528976133Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:58:28.556340911Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:58:28.556620303Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:58:28.586038532Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:58:28.586081662Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:58:28.586096843Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:58:28.586107805Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:58:28.586116727Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:58:33.601449033Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:58:33.633330351Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:58:33.633449019Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:58:33.657718293Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:58:33.65777776Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:58:33.657792362Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:58:33.657801596Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:58:33.657809988Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:58:38.676067037Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:58:38.706406018Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:58:38.70652938Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:58:38.727497767Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:58:38.727539187Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:58:38.72755301Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:58:43.74233085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:58:43.772014772Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:58:43.772114016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:58:43.792864758Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:58:43.792918179Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:58:43.792933492Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:58:43.792944452Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:58:43.792953292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:58:48.813538251Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:58:48.844716336Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:58:48.844837095Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:58:48.865545084Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:58:48.865585344Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:58:48.865598972Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:58:48.865611559Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:58:48.865620973Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:58:53.8793985Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:58:53.908988911Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:58:53.909077726Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:58:53.93092304Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:58:53.930966846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:58:53.930980378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:58:53.930992382Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:58:53.931001887Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:58:58.945509037Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:58:58.976095315Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:58:58.976202284Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:58:58.999710131Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:58:58.999758381Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:58:58.99977235Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:58:58.999782473Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:58:58.999791365Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:59:04.014137314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:59:04.043739917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:59:04.043842724Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:59:04.066823191Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:59:04.066866726Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:59:04.066880813Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:59:04.066891545Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:59:04.066900856Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:59:09.084287666Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:59:09.114344956Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:59:09.114440588Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:59:09.136140134Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:59:09.136193599Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:59:09.136229175Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:59:09.136270325Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:59:09.136280293Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:59:14.151166998Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:59:14.183740824Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:59:14.184244824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:59:14.207533166Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:59:14.207574828Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:59:14.207588044Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:59:14.207597854Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:59:14.207607213Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:59:19.222023443Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:59:19.253856033Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:59:19.253958693Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:59:19.274514582Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:59:19.27455782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:59:19.274571763Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:59:19.27458199Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:59:19.274590051Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:59:24.290597776Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:59:24.320692132Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:59:24.320784675Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:59:24.343513921Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:59:24.343576849Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:59:24.343593706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:59:24.343604958Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:59:24.343614586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:59:29.358804058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:59:29.390577454Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:59:29.390678783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:59:29.415374123Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:59:29.415416482Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:59:29.415430521Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:59:29.415439754Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:59:29.415448789Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:59:34.430183318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:59:34.461013504Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:59:34.461129942Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:59:34.484770373Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:59:34.484812494Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:59:34.484826028Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:59:39.501735488Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:59:39.531570242Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:59:39.531684136Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:59:39.555288218Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:59:39.555332455Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:59:39.555346198Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:59:39.555356991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:59:39.555366711Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:59:44.570275157Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:59:44.603549989Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:59:44.603635119Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:59:44.629816763Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:59:44.629861936Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:59:44.629875102Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:59:44.629885306Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:59:44.629895011Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:59:49.650933037Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:59:49.681123799Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:59:49.681251536Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:59:49.705229852Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:59:49.7052876Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:59:49.705319617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:59:49.705331894Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:59:49.705340999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:59:54.722308638Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:59:54.750062979Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:59:54.750162874Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:59:54.770614391Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:59:54.770658246Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-01T23:59:54.77067164Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-01T23:59:54.770682626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-01T23:59:54.770692498Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-01T23:59:59.79707623Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-01T23:59:59.827694656Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-01T23:59:59.827828282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-01T23:59:59.848633508Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-01T23:59:59.848688581Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:00:04.894641612Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:00:04.959935626Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:00:04.960054596Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:00:05.050344954Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:00:05.050393656Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:00:05.050411051Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:00:05.050422817Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:00:05.050432449Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:00:10.072605142Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:00:10.102508143Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:00:10.102619854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:00:10.123395069Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:00:10.12346608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:00:10.123480116Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:00:10.123538162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:00:10.123548445Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:00:15.139162615Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:00:15.170070276Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:00:15.170182044Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:00:15.192024934Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:00:15.192066302Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:00:15.192080731Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:00:15.192091886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:00:15.192101182Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:00:20.212775209Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:00:20.24159913Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:00:20.241711477Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:00:20.264057661Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:00:20.264100041Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:00:20.26411597Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:00:20.26412661Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:00:20.26413558Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:00:25.280875126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:00:25.312785827Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:00:25.312896795Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:00:25.337846335Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:00:25.337905415Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:00:25.337920807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:00:25.337931059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:00:25.33793978Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:00:30.354110447Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:00:30.382954434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:00:30.383054617Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:00:30.406769942Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:00:30.406810543Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:00:30.406840802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:00:30.40685076Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:00:30.406859311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:00:35.423390308Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:00:35.454558274Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:00:35.454648409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:00:35.479786946Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:00:35.479828511Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:00:35.479841461Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:00:35.479851476Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:00:35.479862085Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:00:40.49715791Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:00:40.52711241Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:00:40.527203132Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:00:40.549972913Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:00:40.550016407Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:00:40.550030386Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:00:40.550041385Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:00:40.550050891Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:00:45.568286703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:00:45.598360304Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:00:45.598482431Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:00:45.619964351Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:00:45.620010486Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:00:45.620025868Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:00:45.620037845Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:00:45.620046902Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:00:50.64436863Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:00:50.672066226Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:00:50.672160297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:00:50.697411343Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:00:50.697455589Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:00:50.697468867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:00:50.697480358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:00:50.697490022Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:00:55.713187984Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:00:55.74181518Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:00:55.741906247Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:00:55.765538093Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:00:55.765591866Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:00:55.765606826Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:00:55.76561804Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:00:55.765627447Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:01:00.782561382Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:01:00.81320126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:01:00.813330968Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:01:00.837200761Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:01:00.837264105Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:01:00.837280674Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:01:00.837334673Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:01:00.8373458Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:01:05.854755354Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:01:05.885024649Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:01:05.885525844Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:01:05.90543364Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:01:05.905486807Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:01:05.905502668Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:01:05.905514961Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:01:05.905525526Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:01:10.920210321Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:01:10.948021932Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:01:10.948138538Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:01:10.973626642Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:01:10.973667948Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:01:10.973681649Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:01:10.973693075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:01:10.973701413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:01:15.9932753Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:01:16.02368321Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:01:16.023802596Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:01:16.05139158Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:01:16.051439529Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:01:16.051457132Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:01:16.051468901Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:01:16.051479239Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:01:21.069962722Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:01:21.099759137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:01:21.099851822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:01:21.122401948Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:01:21.122447214Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:01:21.122460562Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:01:21.122471989Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:01:21.122481374Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:01:26.14407822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:01:26.173145025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:01:26.173275565Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:01:26.194415247Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:01:26.194469713Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:01:26.194485356Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:01:26.194495873Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:01:26.19450581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:01:31.213653812Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:01:31.241693877Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:01:31.241845929Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:01:31.267667455Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:01:31.267722616Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:01:31.267738505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:01:31.267748642Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:01:31.267756643Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:01:36.282388797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:01:36.31498874Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:01:36.315078978Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:01:36.337611059Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:01:36.337657263Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:01:36.337673547Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:01:36.337685981Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:01:36.337696094Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:01:41.357603153Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:01:41.385567455Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:01:41.385659059Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:01:41.408002941Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:01:41.408296297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:01:41.408317343Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:01:41.408329929Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:01:41.408339568Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:01:46.431296079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:01:46.462372161Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:01:46.462476457Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:01:46.483752851Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:01:46.483792299Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:01:46.483806615Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:01:46.483817507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:01:46.483826049Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:01:51.502515099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:01:51.529250929Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:01:51.529342125Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:01:51.552894666Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:01:51.552939831Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:01:51.552954488Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:01:51.552966501Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:01:51.552975952Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:01:56.570296595Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:01:56.6002125Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:01:56.600313169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:01:56.62379949Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:01:56.623843635Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:01:56.623858145Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:01:56.623869514Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:01:56.623878876Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:02:01.647381058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:02:01.679925949Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:02:01.680022475Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:02:01.709686781Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:02:01.70973074Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:02:01.709745394Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:02:01.709755308Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:02:01.709763688Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:02:06.726278769Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:02:06.757186423Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:02:06.757297687Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:02:06.780859599Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:02:06.780927269Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:02:06.780943704Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:02:06.780955061Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:02:06.780964236Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:02:11.801428695Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:02:11.829414504Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:02:11.829525531Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:02:11.852152572Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:02:11.852194874Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:02:11.852208981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:02:11.852220192Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:02:11.852229736Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:02:16.869799544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:02:16.900351115Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:02:16.900560383Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:02:16.922135548Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:02:16.922178752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:02:16.922192688Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:02:16.922205358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:02:16.922214673Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:02:21.94366933Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:02:21.971965986Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:02:21.972079424Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:02:21.993084359Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:02:21.993131466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:02:21.993146291Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:02:21.993157681Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:02:21.993167357Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:02:27.014308159Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:02:27.046153592Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:02:27.046282526Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:02:27.069764298Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:02:27.069807123Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:02:27.06982301Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:02:27.069834821Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:02:27.069843519Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:02:32.089280667Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:02:32.118012287Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:02:32.118109847Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:02:32.142316215Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:02:32.142361278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:02:32.142374805Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:02:32.14238511Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:02:32.142394978Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:02:37.158269806Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:02:37.185501854Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:02:37.185618279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:02:37.207480647Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:02:37.207522907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:02:37.207537091Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:02:37.207586769Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:02:37.207597312Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:02:42.225297674Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:02:42.255487963Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:02:42.25560181Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:02:42.27546045Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:02:42.275517466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:02:42.275532683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:02:42.275543729Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:02:42.275552477Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:02:47.291398424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:02:47.321206111Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:02:47.321350344Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:02:47.342001025Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:02:47.342071842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:02:47.342086678Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:02:47.342097044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:02:47.342105959Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:02:52.359703835Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:02:52.388794052Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:02:52.388907646Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:02:52.414105503Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:02:52.414149595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:02:52.414163168Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:02:52.414174923Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:02:52.414184627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:02:57.436150742Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:02:57.464098407Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:02:57.464205214Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:02:57.485698728Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:02:57.485738083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:02:57.485752754Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:02:57.4857749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:02:57.485784099Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:03:02.504124307Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:03:02.538926461Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:03:02.539023107Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:03:02.56354479Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:03:02.563591772Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:03:02.563607838Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:03:02.563618893Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:03:02.563627714Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:03:07.581030173Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:03:07.611620478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:03:07.611734597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:03:07.636311179Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:03:07.636351788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:03:07.636367118Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:03:12.6552977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:03:12.684533168Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:03:12.684653267Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:03:12.709226673Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:03:12.7092899Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:03:12.709305715Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:03:12.709316772Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:03:12.709326829Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:03:17.72598612Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:03:17.755444442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:03:17.755556887Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:03:17.780051965Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:03:17.780108114Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:03:17.780124187Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:03:17.780133825Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:03:17.780142075Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:03:22.805278415Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:03:22.83474014Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:03:22.83484032Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:03:22.855166873Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:03:22.855220034Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:03:22.855267392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:03:22.855279838Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:03:22.855288627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:03:27.869811441Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:03:27.899007368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:03:27.899121004Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:03:27.923144476Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:03:27.923186557Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:03:27.923200456Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:03:27.923213197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:03:27.923222271Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:03:32.941894238Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:03:32.970482002Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:03:32.970589201Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:03:32.994881474Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:03:32.994925549Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:03:32.99494024Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:03:32.994952249Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:03:32.99496116Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:03:38.014170369Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:03:38.04540095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:03:38.045518025Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:03:38.068862425Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:03:38.068903502Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:03:38.068917099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:03:38.068929016Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:03:38.068938238Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:03:43.089838589Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:03:43.118364096Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:03:43.118459574Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:03:43.139194113Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:03:43.139248933Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:03:43.139263867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:03:43.139273724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:03:43.139282749Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:03:48.163320257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:03:48.193744855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:03:48.193868312Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:03:48.217617916Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:03:48.217681897Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:03:48.217698021Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:03:48.217709201Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:03:48.217718141Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:03:53.231496522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:03:53.260106705Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:03:53.260211671Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:03:53.28722429Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:03:53.287285568Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:03:53.287301415Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:03:53.287311344Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:03:53.28732088Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:03:58.303379381Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:03:58.334610856Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:03:58.334708746Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:03:58.358742218Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:03:58.358805523Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:03:58.358819355Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:03:58.358838623Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:03:58.358912762Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:04:03.376007481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:04:03.407911072Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:04:03.408040361Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:04:03.432537609Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:04:03.432587619Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:04:03.43260437Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:04:03.432615445Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:04:03.432623332Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:04:08.454163346Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:04:08.48502026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:04:08.485113572Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:04:08.504758184Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:04:08.504800691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:04:08.50481637Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:04:08.504828568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:04:08.504838141Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:04:13.518674707Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:04:13.547733601Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:04:13.547849469Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:04:13.574810883Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:04:13.575301779Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:04:13.575508916Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:04:13.575551136Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:04:13.575562277Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:04:18.590329786Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:04:18.619905514Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:04:18.620018616Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:04:18.641848459Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:04:18.641891898Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:04:18.641905572Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:04:18.641917389Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:04:18.641927526Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:04:23.658200385Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:04:23.687535664Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:04:23.687649979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:04:23.710081315Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:04:23.710130799Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:04:23.710146187Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:04:23.710157217Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:04:23.710164364Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:04:28.726303502Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:04:28.756627623Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:04:28.756743849Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:04:28.781604058Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:04:28.781646919Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:04:28.781662126Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:04:28.7816737Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:04:28.781682989Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:04:33.798221179Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:04:33.827642296Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:04:33.827782106Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:04:33.853831229Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:04:33.854311833Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:04:33.854537037Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:04:33.854582613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:04:33.854594911Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:04:38.875299677Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:04:38.903797992Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:04:38.903886966Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:04:38.92747773Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:04:38.927539268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:04:38.927553933Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:04:38.927563744Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:04:38.927571801Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:04:43.943704884Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:04:43.973755009Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:04:43.973843697Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:04:43.997614865Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:04:43.997660001Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:04:43.997674361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:04:49.012314349Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:04:49.039166275Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:04:49.039292719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:04:49.063903576Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:04:49.06396608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:04:49.063991247Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:04:49.064001062Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:04:49.064019178Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:04:54.084794026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:04:54.113497717Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:04:54.113618622Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:04:54.137304569Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:04:54.137347027Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:04:54.137360576Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:04:54.137371807Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:04:54.137382163Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:04:59.154793172Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:04:59.185779615Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:04:59.185901336Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:04:59.208703281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:04:59.208761512Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:04:59.208776792Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:04:59.208787041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:04:59.208795827Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:05:04.222389175Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:05:04.252262368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:05:04.252351923Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:05:04.275048922Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:05:04.275095249Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:05:04.275110477Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:05:04.27513553Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:05:04.275146133Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:05:09.294460448Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:05:09.325118227Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:05:09.325261351Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:05:09.350767491Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:05:09.350810948Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:05:09.350826659Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:05:09.350838696Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:05:09.35084743Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:05:14.366181159Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:05:14.396802777Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:05:14.396922822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:05:14.423476974Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:05:14.423518347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:05:14.423533279Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:05:14.423543605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:05:19.443298266Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:05:19.471895782Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:05:19.472005587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:05:19.49569227Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:05:19.495737765Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:05:19.49575231Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:05:19.49576363Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:05:19.495783268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:05:24.511037962Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:05:24.542427741Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:05:24.542519885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:05:24.570266824Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:05:24.570305705Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:05:24.570319137Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:05:24.570351997Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:05:24.570361128Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:05:29.588183275Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:05:29.617622407Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:05:29.617725504Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:05:29.63973075Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:05:29.639774237Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:05:29.639789537Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:05:29.639817274Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:05:29.639826662Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:05:34.657542309Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:05:34.688628993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:05:34.688735412Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:05:34.711797303Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:05:34.712205315Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:05:34.712398455Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:05:34.71241638Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:05:34.712427064Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:05:39.731305418Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:05:39.75804424Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:05:39.758133494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:05:39.78392207Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:05:39.783962524Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:05:39.783975768Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:05:39.783987299Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:05:39.783997081Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:05:44.801314251Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:05:44.83034475Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:05:44.830453647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:05:44.852783168Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:05:44.852825914Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:05:44.852840311Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:05:44.852851235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:05:44.852861538Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:05:49.872130986Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:05:49.901522337Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:05:49.901634888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:05:49.922998676Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:05:49.923045437Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:05:49.923059199Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:05:49.923070184Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:05:49.923079882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:05:54.940001106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:05:54.967305092Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:05:54.967406278Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:05:54.988710398Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:05:54.9887557Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:05:54.988769585Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:05:54.988780089Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:05:54.988788549Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:06:00.022386001Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:06:00.107056056Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:06:00.107185694Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:06:00.133533506Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:06:00.133594108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:06:00.133608991Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:06:00.133619714Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:06:00.133628491Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:06:05.153541221Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:06:05.181508783Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:06:05.181635503Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:06:05.205573206Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:06:05.205617862Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:06:05.205632672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:06:05.205642844Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:06:05.205651252Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:06:10.224304584Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:06:10.254691568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:06:10.254806902Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:06:10.27538608Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:06:10.275427771Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:06:10.275442832Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:06:10.275454369Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:06:10.275463392Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:06:15.292905624Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:06:15.321567503Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:06:15.321683115Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:06:15.343928483Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:06:15.343970888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:06:15.344039888Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:06:15.344050329Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:06:15.344073346Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:06:20.364137782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:06:20.39568029Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:06:20.395768685Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:06:20.417607163Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:06:20.41765261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:06:20.41770087Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:06:20.417712556Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:06:20.417721023Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:06:25.436646661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:06:25.466018341Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:06:25.466134285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:06:25.488981779Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:06:25.489026602Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:06:25.489041391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:06:25.48905186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:06:25.489062132Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:06:30.507962434Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:06:30.538195396Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:06:30.538361857Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:06:30.561493704Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:06:30.561535533Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:06:30.561550334Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:06:30.561562488Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:06:30.561572303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:06:35.577260393Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:06:35.607310404Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:06:35.607443117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:06:35.629004868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:06:40.647273292Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:06:40.674347313Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:06:40.674795168Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:06:40.697610953Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:06:40.697682846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:06:40.697697716Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:06:40.697708259Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:06:40.69773193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:06:45.71718315Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:06:45.748077757Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:06:45.748198021Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:06:45.771907241Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:06:45.771953183Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:06:45.77196794Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:06:45.771978885Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:06:45.771986255Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:06:50.788162413Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:06:50.81858032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:06:50.818679445Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:06:50.841211833Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:06:50.841268446Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:06:50.841284022Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:06:50.841295598Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:06:50.841303723Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:06:55.857505802Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:06:55.885898912Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:06:55.885999666Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:06:55.910016875Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:06:55.910072538Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:06:55.910088635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:06:55.910099728Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:06:55.910108993Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:07:00.929273199Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:07:00.957807916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:07:00.957938041Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:07:00.980277772Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:07:00.980320218Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:07:00.980333778Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:07:00.980344742Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:07:00.980353329Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:07:05.99810083Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:07:06.030141138Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:07:06.030273209Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:07:06.053527051Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:07:06.053572673Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:07:06.053587964Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:07:06.05359815Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:07:06.05360677Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:07:11.070332692Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:07:11.100771213Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:07:11.100872662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:07:11.121080361Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:07:11.121139142Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:07:11.121154449Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:07:11.121164577Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:07:11.121173624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:07:16.137549663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:07:16.165196858Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:07:16.165301404Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:07:16.188209646Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:07:16.188267886Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:07:16.18828182Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:07:16.188291814Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:07:16.188302666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:07:21.206647097Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:07:21.238669808Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:07:21.238773637Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:07:21.258489336Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:07:21.258533884Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:07:21.258547139Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:07:21.258557594Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:07:21.258580075Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:07:26.279971022Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:07:26.310842485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:07:26.310952097Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:07:26.334979396Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:07:26.335022557Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:07:26.335036152Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:07:31.352667438Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:07:31.376969507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:07:31.377075305Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:07:31.401268184Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:07:31.401310664Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:07:31.401326482Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:07:31.401338698Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:07:31.401348167Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:07:36.415468183Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:07:36.443824161Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:07:36.443922902Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:07:36.467979772Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:07:36.468023096Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:07:36.468036855Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:07:36.468048066Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:07:36.468058498Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:07:41.483390378Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:07:41.513095638Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:07:41.513185827Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:07:41.533882746Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:07:41.533947324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:07:41.533962064Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:07:41.53397248Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:07:41.533980988Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:07:46.554989056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:07:46.585025911Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:07:46.585116893Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:07:46.609966371Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:07:46.610013044Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:07:46.610026408Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:07:46.610036955Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:07:46.610045736Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:07:51.631176091Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:07:51.659285355Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:07:51.659371346Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:07:51.682696236Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:07:51.682738696Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:07:51.682751807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:07:51.682761813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:07:51.682771697Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:07:56.701074535Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:07:56.730527372Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:07:56.730628694Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:07:56.755164647Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:07:56.755216209Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:07:56.755231277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:07:56.755279942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:07:56.755289106Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:08:01.777268355Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:08:01.810014945Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:08:01.810135923Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:08:01.831451778Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:08:01.8314965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:08:01.831512277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:08:01.831523528Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:08:01.831532359Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:08:06.848456992Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:08:06.87903759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:08:06.879135611Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:08:06.904933713Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:08:06.904993676Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:08:06.905009362Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:08:06.905019599Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:08:06.905037942Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:08:11.923751101Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:08:11.955034071Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:08:11.955127511Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:08:11.978919013Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:08:11.979201917Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:08:11.979227118Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:08:11.979261035Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:08:11.979271199Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:08:17.000167619Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:08:17.032882967Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:08:17.033006347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:08:17.056224848Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:08:17.056284553Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:08:17.056298789Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:08:17.056309367Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:08:17.05631776Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:08:22.07193871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:08:22.103005713Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:08:22.103101429Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:08:22.127767286Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:08:22.127808801Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:08:22.127822834Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:08:22.127833989Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:08:22.127843732Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:08:27.145025051Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:08:27.176742843Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:08:27.176836241Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:08:27.200382965Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:08:27.200423744Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:08:27.200513265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:08:27.200525655Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:08:27.200536653Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:08:32.22228311Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:08:32.25180285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:08:32.251944519Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:08:32.275760212Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:08:32.275803043Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:08:32.275816544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:08:32.2758282Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:08:32.275837809Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:08:37.289309008Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:08:37.318666238Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:08:37.318782197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:08:37.344228648Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:08:37.344284411Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:08:37.344298726Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:08:37.344308167Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:08:37.344316407Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:08:42.366464205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:08:42.400183411Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:08:42.400306144Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:08:42.42590389Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:08:42.425945747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:08:42.425959274Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:08:42.4259693Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:08:42.425979752Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:08:47.442782736Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:08:47.472831926Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:08:47.472938886Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:08:47.493548252Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:08:47.493588099Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:08:47.493602889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:08:47.493614739Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:08:47.493624447Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:08:52.510281299Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:08:52.539274058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:08:52.539364598Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:08:52.563680818Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:08:52.563738242Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:08:52.563754104Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:08:52.563763982Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:08:52.563772595Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:08:57.584123773Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:08:57.61186608Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:08:57.611986578Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:08:57.635442067Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:08:57.635482832Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:08:57.635498196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:09:02.654351174Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:09:02.687205236Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:09:02.687335318Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:09:02.710625655Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:09:02.710669449Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:09:02.710683339Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:09:02.710717963Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:09:02.710726876Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:09:07.724986958Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:09:07.755912699Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:09:07.75601403Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:09:07.781454689Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:09:07.781494487Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:09:07.781520159Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:09:07.781530417Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:09:07.781538821Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:09:12.798307471Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:09:12.827743885Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:09:12.82782382Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:09:12.850511784Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:09:12.850555932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:09:12.850570007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:09:12.850580556Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:09:12.850590108Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:09:17.870796811Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:09:17.89872193Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:09:17.898813937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:09:17.922444312Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:09:17.922492447Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:09:17.922507275Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:09:17.922553749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:09:17.922563292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:09:22.942172018Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:09:22.972870534Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:09:22.972958337Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:09:22.996994983Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:09:22.997038212Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:09:22.99705144Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:09:22.997062012Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:09:22.997071597Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:09:28.010157233Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:09:28.042762474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:09:28.042870395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:09:28.068121796Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:09:28.068160707Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:09:28.068173505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:09:28.068184803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:09:28.06819429Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:09:33.090682033Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:09:33.119592299Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:09:33.119715689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:09:33.142377552Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:09:33.142425268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:09:33.142440017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:09:33.142449161Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:09:33.142457645Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:09:38.159887412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:09:38.188330412Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:09:38.188522309Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:09:38.212225185Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:09:38.212279987Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:09:38.212293906Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:09:38.212304088Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:09:38.212312703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:09:43.228606349Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:09:43.2599837Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:09:43.260080817Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:09:43.283951188Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:09:43.28400216Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:09:43.284016761Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:09:43.28402716Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:09:43.284037492Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:09:48.303179646Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:09:48.332923326Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:09:48.333020277Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:09:48.359754063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:09:48.359886566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:09:48.359905272Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:09:48.359927188Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:09:48.359936317Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:09:53.377207246Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:09:53.40618718Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:09:53.406354336Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:09:53.429551127Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:09:53.42959284Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:09:53.429608524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:09:53.429629152Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:09:53.42963859Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:09:58.445772577Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:09:58.474664937Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:09:58.474780897Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:09:58.497872836Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:09:58.497915681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:09:58.497929523Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:09:58.497939348Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:09:58.497947995Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:10:03.515294459Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:10:03.548696568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:10:03.548799696Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:10:03.574901306Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:10:03.574960575Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:10:03.574975198Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:10:03.574985806Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:10:03.57499433Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:10:08.588000064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:10:08.618845563Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:10:08.618940756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:10:08.6398911Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:10:08.639935857Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:10:08.639949751Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:10:13.658303843Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:10:13.689075514Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:10:13.689178172Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:10:13.715622186Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:10:13.715665453Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:10:13.715679805Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:10:13.715714605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:10:13.715724365Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:10:18.734310346Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:10:18.762013395Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:10:18.762123964Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:10:18.787747987Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:10:18.787792044Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:10:18.787806365Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:10:18.787817062Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:10:18.787826949Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:10:23.804288527Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:10:23.835628571Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:10:23.835762584Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:10:23.858650387Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:10:23.858694633Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:10:23.858708984Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:10:23.858719553Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:10:23.85872892Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:10:28.876273001Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:10:28.905344714Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:10:28.90545908Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:10:28.926522805Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:10:28.926562912Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:10:28.926576152Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:10:28.926587151Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:10:33.941002274Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:10:33.969853433Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:10:33.969944047Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:10:33.993536952Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:10:33.993579033Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:10:33.993592948Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:10:33.993604254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:10:33.993613295Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:10:39.01144672Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:10:39.040633551Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:10:39.040740117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:10:39.065526735Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:10:39.06556897Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:10:39.065583297Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:10:39.065596418Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:10:39.06560614Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:10:44.083412494Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:10:44.111679362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:10:44.11180051Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:10:44.134281552Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:10:44.134323001Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:10:44.13433685Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:10:44.134346883Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:10:44.134355323Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:10:49.158379248Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:10:49.188815066Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:10:49.188951983Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:10:49.215465767Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:10:49.215515756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:10:49.215529066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:10:49.2155529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:10:49.215562658Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:10:54.231169316Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:10:54.259068226Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:10:54.259180958Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:10:54.283082529Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:10:54.283140104Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:10:54.283156532Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:10:54.283167572Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:10:54.283177309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:10:59.302879308Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:10:59.332781589Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:10:59.332895717Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:10:59.360517814Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:10:59.360562012Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:10:59.36057647Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:10:59.360586013Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:10:59.360595512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:11:04.378302374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:11:04.408885786Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:11:04.409004597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:11:04.429855957Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:11:04.429897308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:11:04.429911336Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:11:04.42995224Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:11:04.429962117Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:11:09.445697521Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:11:09.475193616Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:11:09.475312372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:11:09.505477934Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:11:09.505523163Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:11:09.50553762Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:11:09.505550268Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:11:09.505560088Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:11:14.524845924Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:11:14.549423681Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:11:14.549524489Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:11:14.573283986Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:11:14.573340221Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:11:14.573356388Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:11:14.573367198Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:11:14.573375948Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:11:19.5886262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:11:19.618348249Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:11:19.618429923Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:11:19.644757955Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:11:19.644806217Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:11:19.644821848Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:11:19.644832613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:11:19.644840699Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:11:24.664252262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:11:24.694163062Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:11:24.69427542Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:11:24.718649531Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:11:24.718694757Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:11:24.718708316Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:11:24.718719171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:11:24.71872873Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:11:29.740291501Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:11:29.770038922Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:11:29.770127196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:11:29.792654705Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:11:29.792695411Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:11:29.792709068Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:11:29.792721074Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:11:29.792739027Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:11:34.808952214Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:11:34.838742543Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:11:34.838832967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:11:34.858812359Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:11:34.858856863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:11:34.85887013Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:11:34.858881739Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:11:34.858891374Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:11:39.87671613Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:11:39.906410216Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:11:39.906611719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:11:39.930152841Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:11:39.930195668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:11:39.93020877Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:11:39.930269829Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:11:39.930279031Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:11:44.947777807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:11:44.979787037Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:11:44.979884074Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:11:45.002743305Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:11:45.002819969Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:11:45.002836204Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:11:45.002915482Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:11:45.002937914Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:11:50.02471552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:11:50.05510186Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:11:50.055210395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:11:50.07925978Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:11:50.07930337Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:11:50.079316146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:11:50.079326212Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:11:50.079335885Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:11:55.102274121Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:11:55.131715225Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:11:55.131809231Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:11:55.15726417Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:11:55.157310827Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:11:55.157325165Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:11:55.157338237Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:11:55.157347185Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:12:00.178611737Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:12:00.212068424Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:12:00.212158256Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:12:00.239916657Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:12:00.239962286Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:12:00.239976899Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:12:00.239989259Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:12:00.239998784Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:12:05.257591949Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:12:05.287200286Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:12:05.287316885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:12:05.312268382Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:12:05.312314087Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:12:05.312328472Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:12:05.312340867Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:12:05.312349776Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:12:10.328182514Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:12:10.357740082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:12:10.357832431Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:12:10.383775817Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:12:10.383823623Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:12:10.383838948Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:12:10.383858064Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:12:10.383865383Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:12:15.399900572Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:12:15.42808565Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:12:15.428200548Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:12:15.451665295Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:12:15.451723261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:12:15.45173807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:12:15.451747204Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:12:15.451756262Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:12:20.471575721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:12:20.499845733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:12:20.499962333Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:12:20.519888794Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:12:20.519931603Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:12:20.519945763Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:12:20.519955726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:12:20.519964129Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:12:25.538229552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:12:25.568644311Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:12:25.568761664Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:12:25.591446807Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:12:25.591509272Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:12:30.607855557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:12:30.636709507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:12:30.636808173Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:12:30.663059206Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:12:30.663098467Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:12:30.663112876Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:12:30.663123319Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:12:30.66313222Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:12:35.679318736Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:12:35.710660004Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:12:35.71078707Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:12:35.734647731Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:12:35.734687736Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:12:35.734715045Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:12:35.734728665Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:12:35.734737514Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:12:40.753033197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:12:40.785553456Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:12:40.785646391Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:12:40.808713998Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:12:40.808753126Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:12:40.808795339Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:12:40.808806504Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:12:40.808815165Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:12:45.824728459Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:12:45.854460152Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:12:45.854571312Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:12:45.877804511Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:12:45.877846659Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:12:45.877860756Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:12:45.877871487Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:12:45.877881267Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:12:50.897603701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:12:50.928382098Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:12:50.928594437Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:12:50.953850624Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:12:50.953907161Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:12:50.953922134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:12:50.953992882Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:12:50.954002725Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:12:55.977293014Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:12:56.007373855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:12:56.007491049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:12:56.03105634Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:12:56.031116311Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:12:56.031132097Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:12:56.03114148Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:12:56.031151049Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:13:01.048308814Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:13:01.081416364Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:13:01.081536638Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:13:01.106296344Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:13:01.10634635Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:13:01.106361155Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:13:01.106371388Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:13:01.106380527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:13:06.125463646Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:13:06.155540245Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:13:06.155630068Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:13:06.18022336Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:13:06.180284827Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:13:06.180300161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:13:06.180310293Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:13:06.180319729Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:13:11.197378416Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:13:11.226506588Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:13:11.226618561Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:13:11.249146937Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:13:11.249197938Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:13:11.249213215Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:13:11.249223333Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:13:11.24924683Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:13:16.263852813Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:13:16.293715493Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:13:16.293832217Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:13:16.315312308Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:13:16.31537424Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:13:16.315390051Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:13:16.315533891Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T00:13:16.315625473Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:13:16.315639685Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:13:21.33645577Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:13:21.365776368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:13:21.365870069Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:13:21.388982085Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:13:21.389024341Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:13:21.389039368Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:13:21.389050452Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:13:21.38906068Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:13:26.407304195Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:13:26.435434054Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:13:26.435556995Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:13:26.460672982Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:13:26.460719099Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:13:26.460735763Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:13:26.460746629Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:13:26.46075628Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:13:31.477799735Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:13:31.50492769Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:13:31.505074718Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:13:31.528863824Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:13:31.528907164Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:13:31.528920775Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:13:31.52893122Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:13:31.528942621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:13:36.545857071Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:13:36.575370378Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:13:36.575465759Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:13:36.598571086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:13:36.598613412Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:13:36.59864167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:13:36.598651707Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:13:36.598660012Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:13:41.61920967Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:13:41.648387562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:13:41.648619237Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:13:41.673378413Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:13:41.673417791Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:13:41.673444673Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:13:41.673455302Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:13:41.673463611Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:13:46.688142135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:13:46.719226782Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:13:46.719336417Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:13:46.743084479Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:13:46.743126531Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:13:46.743141862Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:13:46.743152371Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:13:46.743163266Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:13:51.763848732Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:13:51.797201866Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:13:51.797310642Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:13:51.817892245Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:13:51.817931431Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:13:51.817961826Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:13:51.817973865Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:13:51.81798214Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:13:56.834304216Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:13:56.865223778Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:13:56.865333647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:13:56.885963985Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:13:56.88602699Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:13:56.886042646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:13:56.88605576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:13:56.88606529Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:14:01.927614042Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:14:02.03520021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:14:02.035479858Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:14:02.092623183Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:14:02.092685091Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:14:02.092701493Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:14:02.092713131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:14:02.092722157Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:14:07.113288515Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:14:07.142444624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:14:07.142545076Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:14:07.164192836Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:14:07.164265353Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:14:07.164281505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:14:07.164291577Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:14:07.164308889Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:14:12.185101576Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:14:12.215555614Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:14:12.215686305Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:14:12.236386386Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:14:12.236540485Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:14:12.236560206Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:14:12.236571946Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:14:12.236580688Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:14:17.254198731Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:14:17.284127043Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:14:17.284215842Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:14:17.304684675Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:14:17.304740504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:14:17.304756383Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:14:17.304767433Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:14:17.304775786Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:14:22.322397698Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:14:22.352155649Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:14:22.352266279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:14:22.375860521Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:14:22.375908465Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:14:22.375923423Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:14:22.375934649Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:14:22.375943724Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:14:27.391375493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:14:27.423267202Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:14:27.423365313Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:14:27.446226457Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:14:27.44629414Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:14:27.446308473Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:14:27.446360513Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:14:27.446370891Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:14:32.460002298Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:14:32.488343243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:14:32.488589572Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:14:32.509489929Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:14:32.509536166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:14:32.509550645Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:14:32.509571431Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:14:32.509580687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:14:37.525144481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:14:37.556717974Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:14:37.556815351Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:14:37.582337399Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:14:37.582387573Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:14:37.582401579Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:14:37.582413059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:14:37.582422366Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:14:42.601307293Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:14:42.631694647Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:14:42.631813424Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:14:42.655534781Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:14:42.6555785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:14:42.655593111Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:14:42.655603396Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:14:42.655612712Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:14:47.677209339Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:14:47.709136035Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:14:47.709273475Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:14:47.730869137Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:14:47.730913741Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:14:47.730926568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:14:47.730938194Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:14:47.730948658Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:14:52.746408811Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:14:52.77731832Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:14:52.77741995Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:14:52.800968277Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:14:52.801015597Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:14:52.801030479Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:14:52.801068028Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:14:52.801077747Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:14:57.816559808Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:14:57.845818975Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:14:57.845927085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:14:57.869344064Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:14:57.86938853Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:14:57.869427798Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:14:57.869439084Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:14:57.86944738Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:15:02.888053997Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:15:02.917071805Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:15:02.917194242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:15:02.939320117Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:15:02.939376225Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:15:02.939391299Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:15:02.939400989Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:15:02.939412178Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:15:07.955637126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:15:07.986933878Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:15:07.987035899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:15:08.010653371Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:15:08.010699676Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:15:08.010715502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:15:08.010727312Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:15:08.010737391Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:15:13.029686427Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:15:13.061008587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:15:13.061103804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:15:13.093068266Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:15:13.093114197Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:15:13.093129281Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:15:13.0931412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:15:13.093152672Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:15:18.115712955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:15:18.145403031Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:15:18.145518881Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:15:18.166996442Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:15:18.167038273Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:15:18.167053063Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:15:18.167106093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:15:18.167115547Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:15:23.185284225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:15:23.214617565Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:15:23.214726222Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:15:23.237527557Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:15:23.237570241Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:15:23.237585625Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:15:23.237596307Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:15:23.237605824Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:15:28.253275212Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:15:28.282597753Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:15:28.282696884Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:15:28.306028221Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:15:28.30609176Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:15:28.306107965Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:15:28.30611747Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:15:28.306125737Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:15:33.322389792Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:15:33.351002595Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:15:33.351120443Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:15:33.372947448Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:15:33.372988531Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:15:33.373002242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:15:33.373012168Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:15:33.37302101Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:15:38.392284412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:15:38.422739654Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:15:38.422860232Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:15:38.44481354Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:15:38.444858302Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:15:38.444871961Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:15:38.444884365Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:15:38.444894313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:15:43.459954394Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:15:43.489656568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:15:43.489768577Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:15:43.510967508Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:15:43.511009007Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:15:43.511022635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:15:43.511034134Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:15:43.511043686Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:15:48.528959643Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:15:48.558688031Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:15:48.558790938Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:15:48.582748192Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:15:48.58280625Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:15:48.582822016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:15:48.582831243Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:15:48.582839543Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:15:53.599441705Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:15:53.628368986Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:15:53.628620668Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:15:53.650887892Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:15:53.650931223Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:15:53.65094533Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:15:53.650957377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:15:53.650967156Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:15:58.667290427Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:15:58.698416961Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:15:58.698512289Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:15:58.718165819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:15:58.718205546Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:15:58.718220442Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:15:58.718230873Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:15:58.718251594Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:16:03.73358991Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:16:03.763426115Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:16:03.763535306Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:16:03.786655717Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:16:03.786699517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:16:03.786713802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:16:03.78672585Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:16:03.786735819Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:16:08.804777762Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:16:08.834753875Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:16:08.83486512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:16:08.855615511Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:16:08.855656954Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:16:08.855671311Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:16:08.855682226Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:16:08.855691301Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:16:13.873123064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:16:13.901628227Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:16:13.901754832Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:16:13.92539556Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:16:13.925451278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:16:13.925467273Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:16:13.925477095Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:16:13.925485289Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:16:18.947688122Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:16:18.977165139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:16:18.977281622Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:16:19.001184723Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:16:19.001251574Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:16:19.001266999Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:16:19.001276455Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:16:19.001285281Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:16:24.019124741Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:16:24.046930238Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:16:24.047053974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:16:24.070932798Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:16:24.07097545Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:16:24.071016981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:16:24.071050142Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:16:24.07105988Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:16:29.086290251Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:16:29.115758352Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:16:29.115866379Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:16:29.138459285Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:16:29.138506254Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:16:29.138520659Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:16:29.138545022Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:16:29.138554384Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:16:34.155285047Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:16:34.185668082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:16:34.185791317Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:16:34.211951557Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:16:34.211996446Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:16:34.212011407Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:16:34.212021702Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:16:34.212028957Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:16:39.228731395Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:16:39.259227306Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:16:39.259330357Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:16:39.280170001Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:16:39.280220666Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:16:44.293818982Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:16:44.323342156Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:16:44.323462845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:16:44.344136111Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:16:44.344180818Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:16:44.344194611Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:16:44.344243424Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:16:44.344253555Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:16:49.361453872Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:16:49.391560695Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:16:49.391684407Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:16:49.41456314Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:16:49.414615685Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:16:49.414631031Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:16:49.414641762Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:16:49.414651376Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:16:54.433532668Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:16:54.462376351Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:16:54.462500605Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:16:54.485516294Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:16:54.485562299Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:16:54.485576788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:16:54.485585763Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:16:54.485596489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:16:59.501447824Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:16:59.529986722Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:16:59.530111826Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:16:59.554494367Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:16:59.554535885Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:16:59.554551244Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:16:59.554569938Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:16:59.554579442Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:17:04.571270254Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:17:04.601533659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:17:04.601651673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:17:04.628747712Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:17:04.628795748Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:17:04.628811696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:17:04.628822638Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:17:04.628832329Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:17:09.646271701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:17:09.674355588Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:17:09.674476504Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:17:09.695869975Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:17:09.695914408Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:17:09.695929859Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:17:09.695941404Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:17:09.695951067Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:17:14.709760639Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:17:14.741166566Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:17:14.741289987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:17:14.764562434Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:17:14.764610944Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:17:14.764628436Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:17:14.764639204Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:17:14.764648349Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:17:19.784965895Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:17:19.814485692Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:17:19.814577131Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:17:19.838301623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:17:19.838340675Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:17:19.838355269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:17:19.838365725Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:17:19.838375142Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:17:24.856923341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:17:24.887104137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:17:24.887211288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:17:24.910704326Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:17:24.910751492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:17:24.910766598Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:17:24.910777033Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:17:24.910784815Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:17:29.925327694Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:17:29.957318905Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:17:29.957721346Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:17:29.980715653Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:17:35.000314402Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:17:35.032256685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:17:35.032345437Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:17:35.054308233Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:17:35.054352467Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:17:35.054366783Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:17:35.0543776Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:17:35.054387458Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:17:40.070001052Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:17:40.100955004Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:17:40.101083452Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:17:40.122959695Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:17:40.123004703Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:17:40.123020951Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:17:40.123032029Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:17:40.12304071Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:17:45.139454448Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:17:45.169760637Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:17:45.169849915Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:17:45.189983299Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:17:45.190041207Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:17:45.190056679Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:17:45.190065839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:17:45.190074259Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:17:50.204032478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:17:50.235088184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:17:50.235196119Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:17:50.257821733Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:17:50.25787619Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:17:50.257891016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:17:50.257900468Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:17:50.257909309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:17:55.277268966Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:17:55.30713194Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:17:55.307250025Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:17:55.327835677Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:17:55.32787934Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:17:55.327895587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:17:55.327907212Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:17:55.327916863Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:18:00.351537438Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:18:00.381400245Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:18:00.381500905Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:18:00.406490678Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:18:00.406530462Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:18:00.406543595Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:18:00.406573611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:18:00.406583247Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:18:05.420177844Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:18:05.449181889Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:18:05.449301719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:18:05.473360587Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:18:05.473407523Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:18:05.473422724Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:18:05.473432997Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:18:05.473440663Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:18:10.490270247Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:18:10.520322303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:18:10.5204919Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:18:10.546584016Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:18:10.546629699Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:18:10.546644608Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:18:10.546655459Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:18:15.562954905Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:18:15.592150848Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:18:15.592266315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:18:15.613638253Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:18:15.613695923Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:18:15.613710797Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:18:15.613884702Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T00:18:15.61398218Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:18:15.61399681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:18:20.637307019Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:18:20.667079568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:18:20.667197358Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:18:20.691306114Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:18:20.691353038Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:18:20.691367286Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:18:25.709279713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:18:25.739557933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:18:25.739676302Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:18:25.76121786Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:18:25.76129539Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:18:25.761311238Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:18:25.761322428Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:18:25.761331719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:18:30.780130006Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:18:30.810460271Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:18:30.810574591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:18:30.833295873Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:18:30.833337637Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:18:30.833352881Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:18:30.833363615Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:18:30.83337281Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:18:35.850281341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:18:35.880026801Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:18:35.880346575Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:18:35.90030878Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:18:35.900350607Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:18:35.900387809Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:18:35.90039884Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:18:35.900487256Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:18:40.917167717Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:18:40.94553448Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:18:40.945653253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:18:40.968765016Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:18:40.968822419Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:18:40.968837775Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:18:40.968847039Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:18:40.968855969Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:18:45.988034814Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:18:46.01758632Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:18:46.017696137Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:18:46.038738878Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:18:46.038780105Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:18:46.038796169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:18:46.038807093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:18:46.038816469Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:18:51.063913587Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:18:51.091251153Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:18:51.091339845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:18:51.112894412Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:18:51.112937659Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:18:51.112951547Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:18:51.113051207Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:18:51.113062732Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:18:56.132158291Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:18:56.162150396Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:18:56.162354847Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:18:56.184388411Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:18:56.184554039Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:18:56.184570569Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:18:56.184601847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:18:56.184612015Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:19:01.224059298Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:19:01.299989906Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:19:01.300154536Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:19:01.353006209Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:19:01.353080902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:19:01.353096863Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:19:01.353106923Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:19:01.353116285Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:19:06.370080367Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:19:06.399445162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:19:06.399567269Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:19:06.420583631Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:19:06.420625032Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:19:06.420637816Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:19:06.420648932Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:19:06.420657644Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:19:11.441935658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:19:11.472911637Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:19:11.473005607Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:19:11.49502275Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:19:11.49508882Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:19:11.495103789Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:19:11.495113761Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:19:11.495122452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:19:16.511312656Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:19:16.542078434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:19:16.542172644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:19:16.571420743Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:19:16.571466344Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:19:16.571481164Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:19:16.571513711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:19:16.571523056Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:19:21.591341654Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:19:21.62038797Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:19:21.620579511Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:19:21.640008219Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:19:21.640052048Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:19:21.640066112Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:19:21.640078305Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:19:21.640088061Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:19:26.657329907Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:19:26.68772452Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:19:26.687820193Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:19:26.707919538Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:19:26.707969782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:19:26.707985458Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:19:26.707996604Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:19:26.708007067Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:19:31.728229424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:19:31.758282409Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:19:31.75837005Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:19:31.782120987Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:19:31.782161578Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:19:31.782176035Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:19:31.782187317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:19:31.782196809Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:19:36.79915045Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:19:36.830069774Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:19:36.830178128Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:19:36.854537281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:19:36.854581086Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:19:36.854595513Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:19:36.854605761Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:19:36.85461457Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:19:41.870939472Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:19:41.898101266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:19:41.898224177Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:19:41.920916414Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:19:41.920983883Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:19:41.921017076Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:19:41.921099583Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:19:41.921112932Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:19:46.940228701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:19:46.970220157Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:19:46.970340006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:19:46.992207829Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:19:46.992281361Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:19:46.992296316Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:19:46.992306584Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:19:46.992314909Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:19:52.011510349Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:19:52.042661698Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:19:52.042776862Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:19:52.067337679Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:19:52.067381059Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:19:52.067394915Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:19:52.067407309Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:19:52.067417122Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:19:57.084289135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:19:57.113732472Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:19:57.113828174Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:19:57.137745469Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:19:57.137787525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:19:57.137802667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:19:57.137823969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:19:57.137833211Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:20:02.163882627Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:20:02.209084862Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:20:02.209204656Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:20:02.235719769Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:20:02.235809471Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:20:02.235825235Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:20:02.235835373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:20:02.235844088Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:20:07.257257544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:20:07.284726568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:20:07.284846804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:20:07.306083773Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:20:07.306125329Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:20:07.306140017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:20:07.306152092Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:20:07.306161204Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:20:12.323291944Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:20:12.352419114Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:20:12.352550333Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:20:12.376721993Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:20:12.376762856Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:20:12.376776194Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:20:12.376786572Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:20:12.376795713Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:20:17.397698215Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:20:17.423633099Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:20:17.423722177Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:20:17.445027157Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:20:17.445065211Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:20:17.445079285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:20:17.44509266Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:20:17.445101939Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:20:22.46731166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:20:22.501347719Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:20:22.501468683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:20:22.523117037Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:20:22.523158221Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:20:22.523172633Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:20:22.523183058Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:20:22.523191403Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:20:27.539189674Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:20:27.568729429Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:20:27.568860878Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:20:27.591645451Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:20:27.591687579Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:20:27.591701524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:20:27.591712211Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:20:27.591721762Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:20:32.60722187Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:20:32.637262011Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:20:32.637371112Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:20:32.659102214Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:20:32.65916297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:20:32.659177775Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:20:32.659187563Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:20:32.659195667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:20:37.675854351Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:20:37.705997186Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:20:37.706443622Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:20:37.731377015Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:20:37.731436536Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:20:37.731451122Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:20:37.731460082Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:20:37.731468395Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:20:42.749295841Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:20:42.777420496Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:20:42.777554493Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:20:42.799146648Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:20:42.799202484Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:20:42.799217758Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:20:42.799227084Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:20:42.799257397Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:20:47.816788042Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:20:47.844085178Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:20:47.844185392Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:20:47.867126825Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:20:47.867174934Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:20:47.867219746Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:20:47.867367502Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T00:20:47.867591713Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:20:47.867609864Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:20:52.886409029Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:20:52.91565418Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:20:52.915754178Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:20:52.937831937Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:20:52.937875023Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:20:52.937888559Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:20:52.937899413Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:20:52.937907677Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:20:57.955353666Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:20:57.984354878Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:20:57.984540324Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:20:58.009050775Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:20:58.009094169Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:20:58.009109074Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:20:58.009121528Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:20:58.009131427Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:21:03.029516656Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:21:03.058006562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:21:03.058183937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:21:03.081312747Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:21:03.081357679Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:21:03.081372438Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:21:03.081384477Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:21:03.081393239Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:21:08.100152919Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:21:08.129378426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:21:08.129514531Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:21:08.150145423Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:21:08.150188429Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:21:08.150202797Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:21:08.150215269Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:21:08.150224351Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:21:13.16485067Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:21:13.19426257Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:21:13.194386232Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:21:13.2154529Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:21:13.215497213Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:21:13.21551264Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:21:13.215524Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:21:13.215533293Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:21:18.230465751Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:21:18.258120286Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:21:18.25826026Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:21:18.278114679Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:21:18.278157875Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:21:18.278205739Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:21:18.278216281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:21:18.278224574Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:21:23.293224887Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:21:23.322708556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:21:23.322825955Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:21:23.349163124Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:21:23.349588489Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:21:23.349769007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:21:23.349786548Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:21:23.349797786Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:21:28.365864346Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:21:28.394686121Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:21:28.39478287Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:21:28.416283578Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:21:28.416324362Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:21:28.416337841Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:21:28.416348358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:21:28.416357715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:21:33.431168296Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:21:33.462560268Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:21:33.462687117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:21:33.487420979Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:21:33.487469603Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:21:33.487484517Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:21:33.487495845Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:21:33.487504177Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:21:38.504763134Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:21:38.536220578Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:21:38.536336553Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:21:38.56061957Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:21:38.560666735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:21:38.560680765Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:21:38.560692786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:21:38.560702666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:21:43.57480439Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:21:43.604864573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:21:43.604960092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:21:43.629023046Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:21:43.629065088Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:21:43.629080782Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:21:43.629093216Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:21:43.62910295Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:21:48.646277559Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:21:48.676216672Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:21:48.676347349Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:21:48.697908586Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:21:48.697966965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:21:53.714364692Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:21:53.744959057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:21:53.745052199Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:21:53.769172189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:21:53.769214208Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:21:53.769230182Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:21:53.769251751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:21:53.769261865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:21:58.784387027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:21:58.814663515Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:21:58.814753921Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:21:58.839510936Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:21:58.839553648Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:21:58.839567315Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:21:58.839578983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:21:58.839588428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:22:03.854294168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:22:03.885094907Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:22:03.885230822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:22:03.910831635Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:22:03.910880729Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:22:03.910894574Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:22:03.910917468Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:22:03.910927578Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:22:08.92639445Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:22:08.955222796Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:22:08.955333622Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:22:08.978527399Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:22:08.978570169Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:22:08.978585461Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:22:08.978597057Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:22:08.978605212Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:22:13.993343119Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:22:14.024150504Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:22:14.024278048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:22:14.048346364Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:22:14.048388722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:22:14.048468642Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:22:14.048482764Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:22:14.048493893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:22:19.065257607Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:22:19.095801925Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:22:19.095894888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:22:19.11871966Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:22:19.118785951Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:22:19.118800483Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:22:19.118809949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:22:19.118818555Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:22:24.134197293Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:22:24.163698048Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:22:24.16381142Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:22:24.185564326Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:22:24.185611535Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:22:24.185625112Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:22:24.185636629Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:22:24.185646985Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:22:29.200961461Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:22:29.229960248Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:22:29.23007182Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:22:29.252494632Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:22:29.252544274Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:22:29.252560362Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:22:29.252570066Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:22:29.252578532Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:22:34.267924541Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:22:34.297165234Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:22:34.297267711Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:22:34.318136057Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:22:34.318191622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:22:39.339472955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:22:39.367830726Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:22:39.367937027Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:22:39.389902132Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:22:39.389942995Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:22:39.389956582Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:22:39.38996789Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:22:39.389977753Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:22:44.405379232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:22:44.434891683Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:22:44.434996133Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:22:44.454285427Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:22:44.454329561Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:22:44.454344911Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:22:44.454386278Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:22:44.454395916Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:22:49.47548786Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:22:49.505597147Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:22:49.505731972Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:22:49.531723385Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:22:49.531767951Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:22:49.531807643Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:22:49.531817731Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:22:49.531826033Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:22:54.548294242Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:22:54.576389079Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:22:54.576568974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:22:54.599057918Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:22:54.599110707Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:22:54.599124034Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:22:54.599155106Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:22:54.599165769Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:22:59.616300981Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:22:59.643674257Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:22:59.643785121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:22:59.668194704Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:22:59.668262799Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:22:59.668277556Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:22:59.668286705Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:22:59.66829495Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:23:04.685274434Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:23:04.713569964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:23:04.713677769Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:23:04.734842954Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:23:04.73490466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:23:04.734918556Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:23:04.734973426Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:23:04.734983596Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:23:09.75346847Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:23:09.784698736Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:23:09.784813564Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:23:09.806367227Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:23:09.806409054Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:23:09.806422637Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:23:09.806433742Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:23:09.806443094Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:23:14.822747336Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:23:14.851735019Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:23:14.851835524Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:23:14.877296948Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:23:14.877337359Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:23:14.877350819Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:23:14.877362068Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:23:14.877371396Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:23:19.894392882Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:23:19.923833909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:23:19.92394237Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:23:19.947955856Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:23:19.948001663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:23:19.948017442Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:23:19.948028874Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:23:19.948038455Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:23:24.962874143Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:23:24.995815989Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:23:24.995920581Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:23:25.022532627Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:23:25.022589797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:23:25.022604357Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:23:25.02261364Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:23:25.02262347Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:23:30.041757133Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:23:30.073155975Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:23:30.073275278Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:23:30.097374943Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:23:30.097415426Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:23:30.0974294Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:23:30.097440928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:23:30.097450893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:23:35.114163474Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:23:35.145867234Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:23:35.145958364Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:23:35.166426723Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:23:35.166473204Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:23:35.166486625Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:23:35.166496292Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:23:35.166505131Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:23:40.181288822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:23:40.210467897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:23:40.210559839Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:23:40.233131705Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:23:40.233189778Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:23:40.233204783Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:23:40.233215174Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:23:40.233223649Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:23:45.249018297Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:23:45.2773562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:23:45.277463019Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:23:45.301859544Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:23:45.301900689Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:23:45.301953524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:23:45.301964201Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:23:45.30197278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:23:50.322268088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:23:50.351458871Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:23:50.351564806Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:23:50.374347406Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:23:50.374390092Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:23:50.37440365Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:23:50.374415108Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:23:50.374425327Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:23:55.391125625Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:23:55.419648368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:23:55.419758201Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:23:55.44174896Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:23:55.441792276Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:23:55.441806437Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:23:55.4418653Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:23:55.44187422Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:24:00.46081387Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:24:00.49193416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:24:00.492051355Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:24:00.515115296Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:24:00.515186265Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:24:00.515200559Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:24:00.515211934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:24:00.515221331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:24:05.532920878Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:24:05.562148818Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:24:05.562279911Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:24:05.589513781Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:24:05.589572099Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:24:05.589588464Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:24:05.589600152Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:24:05.589608982Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:24:10.61118393Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:24:10.640817328Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:24:10.640943739Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:24:10.664996708Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:24:10.665053874Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:24:10.665069524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:24:10.665113942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:24:10.665123646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:24:15.68273738Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:24:15.711049863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:24:15.711157185Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:24:15.735705801Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:24:15.735749175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:24:15.73576285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:24:20.757506969Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:24:20.788489582Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:24:20.788601575Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:24:20.811084304Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:24:20.811129635Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:24:20.811144068Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:24:20.811156009Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:24:20.811165668Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:24:25.826762329Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:24:25.858155102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:24:25.85827983Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:24:25.880532868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:24:25.880579211Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:24:25.880594692Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:24:25.880606836Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:24:25.880616627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:24:30.894559402Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:24:30.924221522Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:24:30.924326895Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:24:30.947370894Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:24:30.947424248Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:24:30.947487788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:24:30.947499986Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:24:30.947508857Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:24:35.965925517Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:24:35.994956443Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:24:35.995067858Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:24:36.021372408Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:24:36.021414382Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:24:36.021433731Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:24:36.021445136Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:24:36.021454554Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:24:41.036107465Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:24:41.063841706Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:24:41.063933025Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:24:41.086502849Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:24:41.086552213Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:24:41.08656682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:24:41.086578924Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:24:41.086588642Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:24:46.107265174Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:24:46.138037045Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:24:46.138150343Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:24:46.163723938Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:24:46.163792508Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:24:46.163807333Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:24:46.163816571Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:24:46.163825428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:24:51.186306256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:24:51.215618196Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:24:51.215721295Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:24:51.23893371Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:24:51.238997333Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:24:51.239012147Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:24:51.239021436Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:24:51.239029933Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:24:56.254599385Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:24:56.285526185Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:24:56.285618672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:24:56.308924118Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:24:56.308966843Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:24:56.308982948Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:24:56.308994756Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:24:56.309003887Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:25:01.328999423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:25:01.358091715Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:25:01.358186327Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:25:01.404192445Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:25:01.404253435Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:25:01.404268672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:25:01.40427939Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:25:01.404288009Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:25:06.423881212Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:25:06.45190845Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:25:06.452018735Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:25:06.473484957Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:25:06.473526675Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:25:06.473541735Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:25:06.473552936Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:25:06.473562489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:25:11.490132251Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:25:11.51675693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:25:11.516870051Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:25:11.538143793Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:25:11.538187429Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:25:11.538200906Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:25:11.538212174Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:25:11.538221963Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:25:16.557559449Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:25:16.587422719Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:25:16.587560658Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:25:16.610259033Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:25:16.610302023Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:25:16.61031743Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:25:16.610329292Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:25:16.610339267Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:25:21.629161911Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:25:21.659638757Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:25:21.659760618Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:25:21.681735006Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:25:21.68177608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:25:21.681789433Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:25:21.681801222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:25:21.68181058Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:25:26.696289415Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:25:26.725179187Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:25:26.725310047Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:25:26.746521781Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:25:26.746561285Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:25:26.746598011Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:25:26.746608443Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:25:26.746616388Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:25:31.76532924Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:25:31.794609578Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:25:31.79472433Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:25:31.818614325Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:25:31.818676719Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:25:31.818691921Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:25:31.818702023Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:25:31.81871066Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:25:36.833648485Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:25:36.860064826Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:25:36.860153666Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:25:36.882410963Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:25:36.882458748Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:25:36.882472852Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:25:36.882483662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:25:36.882490906Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:25:41.902614783Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:25:41.930888299Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:25:41.93100546Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:25:41.957389248Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:25:41.957432313Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:25:41.957447299Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:25:41.957457907Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:25:41.957467926Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:25:46.973025183Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:25:47.003994737Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:25:47.004097136Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:25:47.027542425Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:25:47.027591419Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:25:47.027605156Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:25:47.027615355Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:25:47.027624036Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:25:52.045939475Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:25:52.075017249Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:25:52.07512613Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:25:52.096381105Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:25:52.096569045Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:25:52.096588705Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:25:52.096600316Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:25:52.096611648Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:25:57.112760208Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:25:57.143666695Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:25:57.143756781Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:25:57.167151621Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:25:57.167577612Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:25:57.167771676Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:25:57.168061274Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:25:57.168187754Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:26:02.19052355Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:26:02.221323006Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:26:02.221419547Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:26:02.246115971Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:26:02.246157543Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:26:02.246171027Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:26:02.246182536Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:26:02.246192428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:26:07.261221229Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:26:07.29031715Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:26:07.290406859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:26:07.312406683Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:26:07.31254668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:26:07.312562739Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:26:07.312586735Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:26:07.312596186Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:26:12.330204726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:26:12.358263563Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:26:12.358375617Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:26:12.381796226Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:26:12.381839363Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:26:12.381854611Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:26:12.381865953Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:26:12.381875032Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:26:17.400631633Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:26:17.431855293Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:26:17.431966286Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:26:17.453493993Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:26:17.453537364Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:26:17.453551462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:26:17.453573133Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:26:17.453582009Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:26:22.476278222Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:26:22.505341576Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:26:22.505454861Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:26:22.526793461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:26:22.526839138Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:26:22.526852922Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:26:22.52686491Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:26:22.526874343Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:26:27.544269494Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:26:27.574370228Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:26:27.57447527Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:26:27.59416043Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:26:27.594201506Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:26:27.594216594Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:26:27.594263654Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:26:27.594273615Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:26:32.612297885Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:26:32.641402258Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:26:32.641516836Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:26:32.665991101Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:26:32.666032233Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:26:32.666045878Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:26:32.666056568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:26:32.666064713Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:26:37.683294824Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:26:37.711204412Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:26:37.711331535Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:26:37.733507586Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:26:37.733547968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:26:37.733561018Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:26:37.733571741Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:26:37.733580527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:26:42.756295937Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:26:42.785191327Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:26:42.785332164Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:26:42.804794926Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:26:42.805252809Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:26:42.805424708Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:26:42.805441338Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:26:42.805453073Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:26:47.824744219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:26:47.854376284Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:26:47.85447713Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:26:47.876840238Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:26:47.876903113Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:26:47.87692681Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:26:47.876935826Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:26:47.87694419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:26:52.894893827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:26:52.925216604Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:26:52.925358081Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:26:52.950106685Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:26:52.95016471Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:26:52.950179322Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:26:52.950189404Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:26:52.950198071Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:26:57.964709918Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:26:57.995436778Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:26:57.995542069Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:26:58.020911716Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:26:58.020954727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:26:58.020970306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:26:58.020983092Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:26:58.020993146Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:27:03.038016893Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:27:03.069976551Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:27:03.070072503Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:27:03.098410166Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:27:03.098452011Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:27:03.098479288Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:27:03.098490531Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:27:03.09849948Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:27:08.114087629Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:27:08.145333315Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:27:08.14543888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:27:08.169080294Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:27:08.169123842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:27:08.169139605Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:27:08.169150908Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:27:08.169160085Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:27:13.183272474Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:27:13.212269388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:27:13.212380677Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:27:13.236320758Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:27:13.23637722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:27:13.236393538Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:27:13.236403201Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:27:13.236412021Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:27:18.254466552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:27:18.283507394Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:27:18.283625827Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:27:18.306343795Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:27:18.306388621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:27:18.306408265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:27:18.306418816Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:27:18.306428578Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:27:23.325209946Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:27:23.353913362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:27:23.354000468Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:27:23.377215115Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:27:23.377278049Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:27:23.377294045Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:27:23.377304937Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:27:23.377313687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:27:28.393680757Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:27:28.422803862Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:27:28.42292209Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:27:28.446362695Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:27:28.44640778Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:27:28.446421088Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:27:28.44643187Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:27:28.44657828Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:27:33.461196128Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:27:33.491848947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:27:33.491949321Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:27:33.51543158Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:27:33.515494152Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:27:33.515508981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:27:33.515518752Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:27:33.515527528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:27:38.534281327Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:27:38.56236218Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:27:38.562477823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:27:38.583149315Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:27:38.583196732Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:27:38.583213421Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:27:38.583224114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:27:38.58335678Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T00:27:38.583613837Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:27:43.60029041Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:27:43.628818553Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:27:43.628910879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:27:43.653118205Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:27:43.653167277Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:27:43.653181842Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:27:43.653192713Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:27:43.653201897Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:27:48.674303888Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:27:48.705341949Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:27:48.705432013Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:27:48.728251242Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:27:48.728292109Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:27:48.728307921Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:27:48.728333214Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:27:48.728341784Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:27:53.74611251Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:27:53.775794381Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:27:53.775902352Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:27:53.796661077Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:27:53.796720712Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:27:53.796739598Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:27:53.796750291Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:27:53.796761371Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:27:58.813591953Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:27:58.843569587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:27:58.843679063Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:27:58.866374235Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:27:58.86641957Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:27:58.86643369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:27:58.866448344Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:27:58.866456707Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:28:03.883074423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:28:03.912392156Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:28:03.91265881Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:28:03.936139818Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:28:03.936184405Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:28:03.936197866Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:28:03.936209348Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:28:03.936218831Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:28:08.951535565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:28:08.98026232Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:28:08.980350678Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:28:09.004667704Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:28:09.004727722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:28:09.004742353Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:28:09.004752089Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:28:09.004761481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:28:14.020462105Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:28:14.050008429Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:28:14.05012396Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:28:14.073377312Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:28:14.07341792Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:28:14.073431249Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:28:14.073469191Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:28:14.073479214Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:28:19.092556049Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:28:19.12577042Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:28:19.125874447Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:28:19.149428782Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:28:19.149474422Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:28:19.149489354Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:28:19.149501843Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:28:19.149511634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:28:24.164786497Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:28:24.195565765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:28:24.195669645Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:28:24.222132273Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:28:24.22220445Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:28:24.222219723Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:28:24.222230086Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:28:24.222374906Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:28:29.238605056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:28:29.267168821Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:28:29.267287794Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:28:29.28799885Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:28:29.288051088Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:28:29.288065338Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:28:29.288076077Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:28:29.28808489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:28:34.313297951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:28:34.342224965Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:28:34.342742712Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:28:34.362927668Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:28:34.362981285Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:28:34.362996396Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:28:34.363006526Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:28:34.363015138Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:28:39.38068952Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:28:39.410437792Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:28:39.410561431Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:28:39.435761117Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:28:39.435803226Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:28:39.435816768Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:28:39.43582756Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:28:44.450747499Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:28:44.480725032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:28:44.48082016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:28:44.504567419Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:28:44.504617585Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:28:44.504632478Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:28:44.504643191Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:28:44.504651806Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:28:49.519374221Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:28:49.551437705Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:28:49.551526073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:28:49.573011818Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:28:49.573051789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:28:49.573064867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:28:49.573075989Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:28:49.573085957Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:28:54.589502855Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:28:54.619879584Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:28:54.619988439Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:28:54.642832236Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:28:54.642910902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:28:54.642929942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:28:54.642940131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:28:54.642949156Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:28:59.659139535Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:28:59.688753904Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:28:59.688855762Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:28:59.712292268Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:28:59.712333398Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:28:59.712348165Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:28:59.712359057Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:28:59.712368204Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:29:04.729280563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:29:04.75629258Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:29:04.756494645Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:29:04.779138976Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:29:04.779207177Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:29:04.779222763Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:29:04.779245373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:29:04.779254811Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:29:09.79595291Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:29:09.826407615Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:29:09.826516455Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:29:09.849300871Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:29:09.849349323Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:29:09.849364598Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:29:09.849375738Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:29:09.849384101Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:29:14.864284594Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:29:14.893502988Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:29:14.893692626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:29:14.918664434Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:29:14.918705341Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:29:14.918718947Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:29:14.918731278Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:29:14.918740632Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:29:19.939083282Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:29:19.969408879Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:29:19.969550293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:29:19.99380361Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:29:19.993848951Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:29:19.993862217Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:29:19.993873258Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:29:19.993883133Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:29:25.008175502Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:29:25.038457265Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:29:25.038570099Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:29:25.065115898Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:29:25.065153477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:29:25.065167885Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:29:25.065178354Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:29:25.065187679Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:29:30.08125206Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:29:30.110195451Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:29:30.110330211Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:29:30.131942588Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:29:30.131983781Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:29:30.131999505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:29:30.132010189Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:29:30.132020684Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:29:35.153269091Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:29:35.181225206Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:29:35.181345032Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:29:35.206382877Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:29:35.206425292Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:29:35.206439653Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:29:35.206451977Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:29:35.206461451Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:29:40.220715346Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:29:40.249465113Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:29:40.249572767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:29:40.271606427Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:29:40.271649509Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:29:40.271688235Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:29:40.2716984Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:29:40.271706926Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:29:45.287291543Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:29:45.316660658Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:29:45.316767526Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:29:45.33976349Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:29:45.339807299Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:29:45.33982113Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:29:45.339832756Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:29:45.339842428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:29:50.355614765Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:29:50.386480113Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:29:50.386570958Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:29:50.408288129Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:29:50.408336731Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:29:50.408351359Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:29:50.40836245Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:29:50.40837108Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:29:55.425533859Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:29:55.455890257Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:29:55.456013216Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:29:55.481003681Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:29:55.48104495Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:30:00.501217874Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:30:00.53192395Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:30:00.532035271Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:30:00.55528922Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:30:00.555341689Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:30:00.555355858Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:30:00.555366124Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:30:00.555374606Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:30:05.572169734Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:30:05.600885483Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:30:05.600979222Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:30:05.624965182Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:30:05.625016504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:30:05.625031828Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:30:05.625060755Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:30:05.625071179Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:30:10.640122901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:30:10.671477889Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:30:10.671588101Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:30:10.696163052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:30:10.69620859Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:30:10.696223369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:30:10.69624486Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:30:10.696254866Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:30:15.715470432Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:30:15.743869069Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:30:15.744027723Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:30:15.768094218Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:30:15.768134182Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:30:15.768164831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:30:15.768175872Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:30:15.768184471Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:30:20.789277408Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:30:20.816186911Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:30:20.81629627Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:30:20.839947078Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:30:20.839988795Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:30:20.84000435Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:30:20.840015931Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:30:20.840026034Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:30:25.858287426Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:30:25.887446247Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:30:25.887534347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:30:25.914280348Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:30:25.914321077Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:30:25.914334368Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:30:25.914343778Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:30:25.914353619Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:30:30.926166022Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:30:30.955759947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:30:30.955891952Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:30:30.979051377Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:30:30.979092389Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:30:30.979105209Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:30:30.979115222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:30:30.979124166Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:30:35.998290765Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:30:36.028985002Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:30:36.029078269Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:30:36.052974129Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:30:36.053020424Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:30:36.053034336Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:30:36.053062706Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:30:36.053072583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:30:41.07210192Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:30:41.102422864Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:30:41.102512528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:30:41.124890645Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:30:41.124945309Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:30:41.124962218Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:30:41.124972469Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:30:41.12498117Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:30:46.141467578Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:30:46.172088069Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:30:46.172177261Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:30:46.19683807Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:30:46.196882554Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:30:46.196895694Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:30:46.196908255Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:30:46.19691776Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:30:51.214277101Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:30:51.243231843Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:30:51.243342794Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:30:51.26579856Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:30:51.26586001Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:30:51.265875281Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:30:51.265884875Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:30:51.265893595Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:30:56.289047404Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:30:56.318275658Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:30:56.318401609Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:30:56.342416399Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:30:56.342457559Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:30:56.342471452Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:30:56.342482014Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:30:56.342492197Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:31:01.369394855Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:31:01.438958486Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:31:01.439063253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:31:01.466197911Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:31:01.466368961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:31:01.46638983Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:31:01.466399577Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:31:01.466409142Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:31:06.480773602Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:31:06.514312696Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:31:06.514433283Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:31:06.537998071Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:31:06.538039315Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:31:06.538054348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:31:06.538080889Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:31:06.538090041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:31:11.555379952Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:31:11.586082607Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:31:11.586201989Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:31:11.610746065Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:31:11.610791598Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:31:11.610827323Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:31:11.610837527Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:31:11.610846063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:31:16.629287026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:31:16.658634473Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:31:16.6587505Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:31:16.683352646Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:31:16.683434788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:31:16.683450007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:31:16.683458961Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:31:16.683467283Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:31:21.704546358Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:31:21.734484729Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:31:21.73457402Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:31:21.754079897Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:31:21.754121788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:31:21.7541363Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:31:21.754178229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:31:21.754187346Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:31:26.77129515Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:31:26.801025678Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:31:26.801140245Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:31:26.826842544Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:31:26.82689101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:31:26.826904897Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:31:26.826915022Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:31:26.826924721Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:31:31.845489567Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:31:31.875604418Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:31:31.87572041Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:31:31.896925556Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:31:31.896969233Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:31:31.896983105Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:31:31.897054572Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:31:31.897064969Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:31:36.915476331Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:31:36.945769406Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:31:36.945861672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:31:36.969382166Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:31:36.969440134Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:31:36.969456221Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:31:36.969513504Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:31:36.969522976Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:31:41.987908728Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:31:42.018071734Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:31:42.018174207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:31:42.039180646Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:31:42.039261127Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:31:42.039278307Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:31:42.039357089Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:31:42.039377334Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:31:47.054792699Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:31:47.085071378Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:31:47.085163869Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:31:47.105205728Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:31:47.105265562Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:31:47.105290723Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:31:47.105302633Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:31:47.105311464Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:31:52.123929442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:31:52.152317935Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:31:52.152473314Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:31:52.176985917Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:31:52.177024781Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:31:52.177038239Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:31:52.177049922Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:31:52.177059623Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:31:57.194342241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:31:57.223835661Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:31:57.223959089Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:31:57.245282929Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:31:57.245325751Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:31:57.245339537Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:31:57.245394901Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:31:57.245404812Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:32:02.267363071Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:32:02.297898596Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:32:02.298056165Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:32:02.323658626Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:32:02.323719585Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:32:02.32373587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:32:02.323748863Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:32:02.323759223Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:32:07.340266306Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:32:07.370430831Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:32:07.370542273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:32:07.395743195Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:32:07.395785878Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:32:07.395799342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:32:07.395827918Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:32:07.395837724Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:32:12.417290098Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:32:12.4477655Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:32:12.447861907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:32:12.473767768Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:32:12.47381399Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:32:12.473827834Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:32:12.473838305Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:32:12.473849035Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:32:17.490204144Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:32:17.518541733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:32:17.518661516Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:32:17.544484583Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:32:17.544536472Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:32:17.544559727Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:32:17.544570039Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:32:17.544578763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:32:22.562290387Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:32:22.590815836Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:32:22.59092888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:32:22.615843325Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:32:22.615886974Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:32:22.615901296Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:32:22.615912235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:32:22.615921539Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:32:27.637275823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:32:27.666652181Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:32:27.666743145Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:32:27.690820502Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:32:27.69086901Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:32:27.690885037Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:32:27.690894241Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:32:27.690900918Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:32:32.709148159Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:32:32.740619997Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:32:32.740714366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:32:32.759550403Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:32:32.759592972Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:32:32.759607944Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:32:32.759650556Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:32:32.759659341Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:32:37.775998534Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:32:37.804064057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:32:37.804154331Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:32:37.828970762Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:32:37.829017004Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:32:37.829031719Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:32:37.829041332Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:32:37.82904962Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:32:42.847866551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:32:42.87753879Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:32:42.877642297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:32:42.902084418Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:32:42.902124496Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:32:42.902154992Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:32:42.90216546Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:32:42.902174428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:32:47.917915817Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:32:47.947071189Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:32:47.947181097Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:32:47.971863223Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:32:47.971911807Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:32:47.971947687Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:32:47.971959351Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:32:47.971968563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:32:52.987315025Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:32:53.01847733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:32:53.01859169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:32:53.044085229Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:32:53.044126678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:32:53.044141561Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:32:58.059044463Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:32:58.086629941Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:32:58.086732274Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:32:58.108922322Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:32:58.108965545Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:32:58.108979701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:32:58.109014055Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:32:58.109023574Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:33:03.126385045Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:33:03.161759715Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:33:03.161889507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:33:03.186064819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:33:03.186123621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:33:03.186138119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:33:03.186147235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:33:03.186155018Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:33:08.201779279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:33:08.235442522Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:33:08.235548841Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:33:08.255107579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:33:08.255153409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:33:08.255167782Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:33:08.255186552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:33:08.255195261Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:33:13.272283201Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:33:13.299121104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:33:13.29923059Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:33:13.32026656Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:33:13.320306258Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:33:13.320321289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:33:13.320332526Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:33:13.320341904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:33:18.337300876Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:33:18.366899084Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:33:18.366990378Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:33:18.387490522Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:33:18.3875348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:33:18.38754886Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:33:18.387560077Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:33:18.387568636Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:33:23.405323012Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:33:23.435420928Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:33:23.435502761Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:33:23.458884929Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:33:23.458944401Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:33:23.458959012Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:33:23.458969914Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:33:23.458978167Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:33:28.474442231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:33:28.504952465Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:33:28.505044224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:33:28.52643852Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:33:28.52648189Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:33:28.526495843Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:33:28.526533341Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:33:28.526543413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:33:33.542618593Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:33:33.57109833Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:33:33.571215846Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:33:33.593766896Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:33:33.593810684Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:33:33.593825963Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:33:33.59383605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:33:33.593846483Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:33:38.611913129Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:33:38.642190378Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:33:38.642298815Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:33:38.666055819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:33:38.666098137Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:33:38.666112307Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:33:38.666124327Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:33:38.666133605Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:33:43.683226311Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:33:43.711759114Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:33:43.711874263Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:33:43.736588102Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:33:43.73663176Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:33:48.754184461Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:33:48.782163173Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:33:48.782290273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:33:48.802067511Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:33:48.802133601Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:33:48.802149305Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:33:48.802160607Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:33:48.80217037Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:33:53.818266634Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:33:53.846425963Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:33:53.84654285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:33:53.866897312Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:33:53.866940735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:33:53.866955348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:33:58.885288908Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:33:58.914758214Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:33:58.914851265Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:33:58.935604189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:33:58.935656867Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:33:58.935693097Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:33:58.935704466Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:33:58.935712936Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:34:03.953417649Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:34:03.982113594Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:34:03.982214436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:34:04.005292087Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:34:04.005336734Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:34:04.005353319Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:34:04.005365565Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:34:04.005374486Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:34:09.022292389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:34:09.052848682Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:34:09.05301692Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:34:09.076286488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:34:09.076340493Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:34:09.076355716Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:34:09.076366058Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:34:09.076374381Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:34:14.093090002Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:34:14.121285423Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:34:14.121386196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:34:14.144067398Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:34:14.144125162Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:34:14.144141036Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:34:14.144150265Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:34:14.144158315Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:34:19.168420684Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:34:19.195676869Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:34:19.195835714Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:34:19.217595705Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:34:19.217643879Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:34:19.217669107Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:34:19.217678192Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:34:19.217688169Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:34:24.232144239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:34:24.26117488Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:34:24.261291744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:34:24.283422764Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:34:24.283469699Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:34:29.301399892Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:34:29.331321651Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:34:29.331434656Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:34:29.354660368Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:34:29.354703557Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:34:29.354742864Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:34:29.354754512Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:34:29.354763374Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:34:34.371285955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:34:34.400006875Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:34:34.400100048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:34:34.420952843Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:34:34.421311632Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:34:34.421342762Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:34:34.421356254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:34:34.421367719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:34:39.439360239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:34:39.46861316Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:34:39.468716031Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:34:39.491357507Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:34:39.491425677Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:34:39.49144132Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:34:39.491450527Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:34:39.491458914Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:34:44.504188531Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:34:44.536780657Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:34:44.536894359Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:34:44.558782706Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:34:44.558825341Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:34:44.558840524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:34:44.558852849Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:34:44.558861921Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:34:49.579524747Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:34:49.611402511Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:34:49.611502952Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:34:49.632772909Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:34:49.632814343Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:34:49.632829596Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:34:49.632840823Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:34:49.632851331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:34:54.651287732Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:34:54.681376286Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:34:54.681938344Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:34:54.702730635Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:34:54.703172272Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:34:54.70339029Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:34:54.703616877Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:34:54.703631433Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:34:59.720435258Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:34:59.750089056Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:34:59.750181663Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:34:59.772712766Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:34:59.772758584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:34:59.772774163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:34:59.772811582Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:34:59.772823796Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:35:04.787570593Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:35:04.816671733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:35:04.816788096Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:35:04.836730041Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:35:04.836782374Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:35:04.836814722Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:35:04.836824805Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:35:04.836833249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:35:09.85349909Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:35:09.883094695Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:35:09.883208557Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:35:09.903916418Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:35:09.903961118Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:35:09.903974856Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:35:09.9039968Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:35:09.904006389Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:35:14.921924069Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:35:14.948689223Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:35:14.948785101Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:35:14.972229724Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:35:14.972288076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:35:14.972304941Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:35:14.972317126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:35:19.988063802Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:35:20.018846997Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:35:20.018963304Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:35:20.043180699Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:35:20.043224865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:35:20.043252684Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:35:20.043263678Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:35:20.043272419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:35:25.061296639Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:35:25.094426662Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:35:25.094546799Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:35:25.118922648Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:35:25.118964692Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:35:25.118978297Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:35:25.118989555Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:35:25.118998774Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:35:30.134680091Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:35:30.166172909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:35:30.166283891Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:35:30.187524076Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:35:30.187565171Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:35:30.187580328Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:35:30.187592925Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:35:30.187602354Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:35:35.204852892Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:35:35.234663144Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:35:35.234762117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:35:35.258773767Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:35:35.258834959Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:35:35.258850145Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:35:35.25886085Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:35:35.258869322Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:35:40.279309012Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:35:40.309196326Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:35:40.309339338Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:35:40.335296242Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:35:40.335341268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:35:40.335356338Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:35:40.335366912Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:35:40.335376739Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:35:45.354097804Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:35:45.383794049Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:35:45.383899523Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:35:45.403450247Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:35:45.403504507Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:35:45.403519538Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:35:45.403530822Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:35:45.403540219Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:35:50.424572959Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:35:50.45439135Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:35:50.454483974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:35:50.478630223Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:35:50.478688058Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:35:50.478702673Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:35:50.478712318Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:35:50.478723693Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:35:55.499388605Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:35:55.528674741Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:35:55.528801311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:35:55.550970953Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:35:55.551014615Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:35:55.551029076Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:35:55.551047295Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:35:55.551055775Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:36:00.570271289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:36:00.598114813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:36:00.598223256Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:36:00.619757913Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:36:00.619806215Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:36:00.619820742Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:36:00.619832991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:36:00.619843Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:36:05.638109137Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:36:05.666958964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:36:05.667051331Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:36:05.687975066Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:36:05.688031824Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:36:05.688049238Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:36:05.688059614Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:36:05.688068262Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:36:10.703435584Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:36:10.732747624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:36:10.732840292Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:36:10.753991919Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:36:10.754031259Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:36:10.754044921Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:36:10.754055418Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:36:10.754064436Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:36:15.769286723Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:36:15.798654375Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:36:15.798775126Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:36:15.821794491Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:36:15.821861015Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:36:15.821876372Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:36:15.821886927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:36:15.821895769Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:36:20.841186135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:36:20.870331736Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:36:20.870435997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:36:20.89468821Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:36:20.894730425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:36:20.894745884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:36:20.894800448Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:36:20.894811416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:36:25.90933099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:36:25.938480679Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:36:25.938679191Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:36:25.963822598Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:36:25.963864578Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:36:25.96387911Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:36:25.963890006Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:36:25.963899414Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:36:30.982531525Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:36:31.010643916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:36:31.010756938Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:36:31.03715267Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:36:31.037210808Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:36:31.037227971Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:36:31.037262532Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:36:31.037274016Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:36:36.056915032Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:36:36.085019928Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:36:36.085143524Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:36:36.109646164Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:36:36.109698455Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:36:36.109711722Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:36:36.109722237Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:36:36.109731158Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:36:41.130843914Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:36:41.161526856Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:36:41.161654126Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:36:41.187111542Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:36:41.187152907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:36:41.18716771Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:36:41.187199836Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:36:41.18721052Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:36:46.20375568Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:36:46.235796068Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:36:46.235911176Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:36:46.258378216Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:36:46.258421647Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:36:46.258435251Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:36:46.258462911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:36:46.258471763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:36:51.275361987Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:36:51.304123004Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:36:51.304249389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:36:51.327381215Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:36:51.327423469Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:36:51.32743792Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:36:51.327448852Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:36:51.327458105Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:36:56.345392994Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:36:56.37490252Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:36:56.375037918Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:36:56.398043346Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:36:56.398104571Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:36:56.398120479Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:36:56.398130108Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:36:56.398138651Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:37:01.418365628Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:37:01.44808828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:37:01.448205089Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:37:01.47213407Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:37:01.472175303Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:37:01.472188926Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:37:01.47221796Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:37:01.472227275Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:37:06.488008397Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:37:06.525064377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:37:06.525182599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:37:06.545464982Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:37:06.54551003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:37:06.545524481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:37:06.545536776Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:37:06.545546472Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:37:11.563918724Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:37:11.593334575Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:37:11.593448573Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:37:11.616312298Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:37:11.616359285Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:37:11.616372945Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:37:11.616535028Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:37:11.616550835Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:37:16.633928927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:37:16.664878168Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:37:16.664971591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:37:16.690798355Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:37:16.690863271Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:37:16.690878377Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:37:16.690906905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:37:16.690933229Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:37:21.710755899Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:37:21.739916897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:37:21.740041938Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:37:21.760652899Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:37:21.760694501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:37:21.760746233Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:37:21.760800794Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:37:21.760811646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:37:26.778728736Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:37:26.809258936Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:37:26.809360309Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:37:26.832544259Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:37:26.832586926Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:37:26.832601394Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:37:26.832613313Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:37:26.832622444Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:37:31.848197658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:37:31.877676403Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:37:31.877781204Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:37:31.903938941Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:37:31.903985574Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:37:31.904000747Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:37:36.923317058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:37:36.95225835Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:37:36.952357054Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:37:36.97551843Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:37:36.975559999Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:37:36.975573667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:37:36.975594758Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:37:36.975603825Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:37:41.992605755Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:37:42.02322507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:37:42.023356112Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:37:42.052629574Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:37:42.052678115Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:37:42.05269512Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:37:42.05272067Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:37:42.052730147Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:37:47.074314662Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:37:47.105018192Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:37:47.10513495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:37:47.132292801Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:37:47.132333679Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:37:47.132347093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:37:47.132359305Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:37:47.132369037Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:37:52.152959609Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:37:52.182792179Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:37:52.182918453Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:37:52.202486713Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:37:52.202533231Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:37:52.202547688Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:37:52.202557346Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:37:52.202566765Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:37:57.220745498Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:37:57.25115738Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:37:57.251328461Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:37:57.273602948Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:37:57.273661883Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:37:57.273677145Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:37:57.273700038Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:37:57.273723603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:38:02.291271499Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:38:02.319597604Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:38:02.319695358Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:38:02.341742563Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:38:02.341788729Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:38:02.341803318Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:38:02.34183137Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:38:02.34184256Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:38:07.35975161Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:38:07.389138198Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:38:07.389258058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:38:07.411516988Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:38:07.411558203Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:38:07.411571528Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:38:07.411583788Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:38:07.411594012Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:38:12.431292729Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:38:12.461030472Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:38:12.461148699Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:38:12.486767925Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:38:12.486808715Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:38:12.486822113Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:38:12.48683395Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:38:17.505941454Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:38:17.536684159Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:38:17.536783984Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:38:17.559862941Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:38:17.55990597Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:38:17.55992007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:38:17.559930877Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:38:17.559941007Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:38:22.579307106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:38:22.60864755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:38:22.608769635Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:38:22.632866712Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:38:22.632916372Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:38:22.632930801Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:38:22.632941205Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:38:22.632951705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:38:27.64879245Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:38:27.680281222Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:38:27.680947257Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:38:27.702171546Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:38:27.702225065Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:38:27.702253253Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:38:27.702265822Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:38:27.702273875Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:38:32.718305375Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:38:32.74779736Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:38:32.747888413Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:38:32.768617901Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:38:32.768666176Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:38:32.768680829Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:38:32.768693691Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:38:32.768704324Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:38:37.786268044Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:38:37.815444154Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:38:37.815537425Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:38:37.839743956Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:38:37.839793025Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:38:37.839807963Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:38:37.839819145Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:38:37.839828243Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:38:42.856298104Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:38:42.883805907Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:38:42.883895028Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:38:42.903113569Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:38:42.90315423Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:38:42.90316705Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:38:47.923223532Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:38:47.952304151Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:38:47.952542547Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:38:47.972608251Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:38:47.972651528Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:38:47.972664736Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:38:47.972677291Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:38:47.97268649Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:38:52.990283638Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:38:53.018991598Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:38:53.019087635Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:38:53.040035799Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:38:53.040079299Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:38:53.040093295Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:38:53.04013724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:38:53.040147237Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:38:58.054879796Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:38:58.084816984Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:38:58.084914223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:38:58.104970752Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:38:58.105033021Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:38:58.105048692Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:38:58.105058733Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:38:58.105066812Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:39:03.120342056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:39:03.152869805Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:39:03.152987794Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:39:03.178336175Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:39:03.17840712Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:39:03.17842279Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:39:03.178432177Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:39:03.17844039Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:39:08.19678997Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:39:08.227427385Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:39:08.22755093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:39:08.250407995Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:39:08.250449045Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:39:08.250463202Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:39:08.250474206Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:39:08.250483766Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:39:13.265231221Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:39:13.295971667Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:39:13.296064642Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:39:13.318319882Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:39:13.318361173Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:39:13.318406948Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:39:13.318416794Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:39:13.31842602Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:39:18.33531897Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:39:18.363129541Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:39:18.363264499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:39:18.387107858Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:39:18.387161887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:39:18.387178835Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:39:18.387188357Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:39:18.387196478Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:39:23.400996288Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:39:23.432642468Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:39:23.432774952Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:39:23.457412974Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:39:23.457458988Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:39:23.457473585Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:39:23.457486314Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:39:23.457496312Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:39:28.475298101Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:39:28.505404506Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:39:28.505502683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:39:28.525587576Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:39:28.525633033Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:39:28.525647594Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:39:28.525659294Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:39:28.525667953Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:39:33.542086823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:39:33.573557573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:39:33.573658452Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:39:33.595089393Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:39:33.595136968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:39:33.59515206Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:39:33.595186684Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:39:33.595198627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:39:38.611067801Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:39:38.640337532Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:39:38.640557937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:39:38.664297037Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:39:38.664338612Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:39:38.664352445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:39:38.664372753Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:39:38.664382158Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:39:43.678458755Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:39:43.709711999Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:39:43.709804005Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:39:43.735797547Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:39:43.735841088Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:39:43.735855489Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:39:43.735865561Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:39:43.735875718Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:39:48.753475602Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:39:48.782739034Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:39:48.782861755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:39:48.803214707Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:39:48.803277908Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:39:48.803293177Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:39:48.803302402Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:39:48.803310614Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:39:53.816931587Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:39:53.846912627Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:39:53.847078995Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:39:53.87096569Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:39:53.871006153Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:39:53.871020656Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:39:53.871039294Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:39:53.871048521Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:39:58.88615814Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:39:58.914807212Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:39:58.914929913Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:39:58.939560203Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:39:58.939620623Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:39:58.939636555Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:39:58.939645885Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:39:58.939654203Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:40:03.959619359Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:40:03.992646728Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:40:03.992775069Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:40:04.021258055Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:40:04.021301586Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:40:04.021317132Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:40:04.021330788Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:40:04.021339646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:40:09.039518324Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:40:09.068419318Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:40:09.068574338Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:40:09.089891541Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:40:09.089934691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:40:09.089948487Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:40:09.08998986Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:40:09.089999341Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:40:14.103852875Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:40:14.13405291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:40:14.13414671Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:40:14.157452117Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:40:14.157852236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:40:14.157875751Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:40:14.157889371Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:40:14.157901234Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:40:19.182141344Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:40:19.211545923Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:40:19.211638008Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:40:19.235652402Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:40:19.235698911Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:40:19.235713672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:40:19.235724185Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:40:19.235735221Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:40:24.251351021Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:40:24.280111866Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:40:24.280212578Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:40:24.301051263Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:40:24.30109805Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:40:24.301113733Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:40:29.315758718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:40:29.344989624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:40:29.345085375Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:40:29.368249237Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:40:29.368293043Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:40:29.368306041Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:40:29.368316254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:40:29.36832532Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:40:34.384921578Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:40:34.414743758Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:40:34.414874749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:40:34.441576779Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:40:34.441625289Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:40:34.441640288Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:40:34.441652299Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:40:34.441675127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:40:39.461303809Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:40:39.491994676Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:40:39.492102732Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:40:39.515484082Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:40:39.515524226Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:40:39.515537412Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:40:39.515548164Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:40:39.515558215Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:40:44.535316798Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:40:44.563498939Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:40:44.563601704Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:40:44.587770085Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:40:44.587811143Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:40:44.587824071Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:40:44.587835043Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:40:44.587844966Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:40:49.605308513Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:40:49.634019024Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:40:49.634142483Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:40:49.656337702Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:40:49.656377752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:40:49.65639194Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:40:49.656402518Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:40:49.656421562Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:40:54.674267555Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:40:54.701944137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:40:54.702048409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:40:54.726037683Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:40:54.726081021Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:40:54.726094261Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:40:54.726129573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:40:54.72613875Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:40:59.742001141Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:40:59.773163308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:40:59.773291923Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:40:59.795816543Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:40:59.795861156Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:40:59.795875428Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:40:59.795887845Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:40:59.795898106Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:41:04.812176039Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:41:04.839383102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:41:04.839508054Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:41:04.86308333Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:41:04.863131888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:41:04.863148371Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:41:04.863159205Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:41:04.863166685Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:41:09.88155067Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:41:09.911053918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:41:09.911164988Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:41:09.933489971Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:41:09.933531959Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:41:09.933563995Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:41:09.933576102Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:41:09.933584722Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:41:14.949504683Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:41:14.979751139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:41:14.979876822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:41:15.009040859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:41:15.009087261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:41:15.009102595Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:41:15.009127163Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:41:15.009137426Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:41:20.029917002Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:41:20.058525615Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:41:20.058616343Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:41:20.085845656Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:41:20.085897393Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:41:20.085931209Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:41:20.085941774Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:41:20.085951018Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:41:25.105272092Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:41:25.135462991Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:41:25.135556077Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:41:25.161301392Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:41:25.161343883Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:41:25.161357641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:41:25.161367461Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:41:25.161377467Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:41:30.182293023Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:41:30.211948648Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:41:30.212045507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:41:30.234461761Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:41:30.234504186Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:41:30.234519174Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:41:30.234531069Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:41:30.234540188Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:41:35.251872884Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:41:35.284125442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:41:35.284274092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:41:35.30830103Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:41:35.308341564Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:41:35.308355895Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:41:35.308366989Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:41:35.308375999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:41:40.327307715Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:41:40.357871422Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:41:40.357979055Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:41:40.380616871Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:41:40.380662269Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:41:40.380675958Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:41:40.380688079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:41:40.380697818Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:41:45.396953422Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:41:45.425779059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:41:45.425902051Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:41:45.449970648Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:41:45.450017063Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:41:45.450034368Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:41:45.450073949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:41:45.450085627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:41:50.473038135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:41:50.499172368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:41:50.499357078Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:41:50.521382193Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:41:50.521431968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:41:50.521448533Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:41:50.521461378Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:41:50.521470664Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:41:55.540652302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:41:55.572828556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:41:55.572934885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:41:55.597364269Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:41:55.597410995Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:41:55.597424897Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:41:55.597458362Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:41:55.597468227Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:42:00.617230614Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:42:00.645810019Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:42:00.645936283Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:42:00.669252108Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:42:00.669292351Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:42:00.669306324Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:42:00.669316367Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:42:00.669326162Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:42:05.687267372Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:42:05.717094943Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:42:05.717186947Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:42:05.737845623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:42:05.737888584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:42:05.737904295Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:42:05.737915099Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:42:05.737924172Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:42:10.75546059Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:42:10.785987019Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:42:10.786092053Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:42:10.807325022Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:42:10.807366754Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:42:10.807380378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:42:10.807391139Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:42:10.807400943Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:42:15.826282349Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:42:15.855149402Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:42:15.855281372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:42:15.880326901Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:42:15.880372095Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:42:15.880386305Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:42:15.880397373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:42:15.880407895Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:42:20.901769174Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:42:20.931467296Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:42:20.931556048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:42:20.954062465Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:42:20.954102868Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:42:20.954138251Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:42:20.95414934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:42:20.954158074Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:42:25.972441866Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:42:26.000216247Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:42:26.000357673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:42:26.025761357Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:42:26.025805725Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:42:26.025821025Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:42:26.025830815Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:42:26.025840209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:42:31.04653974Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:42:31.074614078Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:42:31.074726023Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:42:31.099395278Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:42:31.099436736Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:42:31.099450159Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:42:31.09946134Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:42:31.099471525Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:42:36.118908792Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:42:36.149348177Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:42:36.149442017Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:42:36.173291883Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:42:36.17333564Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:42:36.173349546Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:42:36.173362071Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:42:36.173395507Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:42:41.190651087Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:42:41.21869132Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:42:41.218776177Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:42:41.242545632Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:42:41.242583728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:42:41.242599375Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:42:41.242609494Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:42:41.2426184Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:42:46.26281003Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:42:46.294211809Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:42:46.294317838Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:42:46.318143386Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:42:46.318184347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:42:46.318216089Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:42:46.318225941Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:42:46.318348664Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:42:51.335659748Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:42:51.365607585Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:42:51.365742474Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:42:51.386261156Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:42:51.386305803Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:42:51.386319587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:42:51.386330133Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:42:51.386340271Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:42:56.403489686Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:42:56.436325668Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:42:56.436530541Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:42:56.461621242Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:42:56.461662016Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:42:56.461693269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:42:56.461734998Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:42:56.461762956Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:43:01.48130245Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:43:01.51367938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:43:01.513815328Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:43:01.536950637Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:43:01.536993645Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:43:01.537006865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:43:01.537018247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:43:01.537027998Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:43:06.553266476Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:43:06.581780692Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:43:06.581895928Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:43:06.606677488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:43:06.606722309Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:43:06.606737719Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:43:06.606749635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:43:06.606759468Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:43:11.626080104Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:43:11.652764825Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:43:11.652869528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:43:11.674341875Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:43:11.674396729Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:43:11.674411944Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:43:11.674420727Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:43:11.674429527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:43:16.69255433Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:43:16.721754863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:43:16.721865023Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:43:16.744906194Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:43:16.744949125Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:43:16.744964366Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:43:16.744974501Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:43:16.744983738Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:43:21.763292926Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:43:21.792553492Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:43:21.792660231Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:43:21.813295627Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:43:21.813357448Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:43:21.813372065Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:43:21.813381113Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:43:21.813389526Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:43:26.830289341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:43:26.859491332Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:43:26.859582907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:43:26.882465665Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:43:26.882513136Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:43:26.882527624Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:43:26.88253924Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:43:26.882546895Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:43:31.902287596Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:43:31.93093942Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:43:31.93105532Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:43:31.954677601Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:43:31.95472121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:43:31.954735607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:43:31.954769348Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:43:31.954779021Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:43:36.96802634Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:43:36.999339825Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:43:36.999432117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:43:37.025050094Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:43:37.025094338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:43:37.025108875Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:43:37.025127674Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:43:37.025136988Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:43:42.046518329Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:43:42.075915552Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:43:42.076038246Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:43:42.097006681Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:43:42.097049763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:43:42.097065537Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:43:42.097111092Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:43:42.097120715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:43:47.116035838Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:43:47.147210739Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:43:47.147343093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:43:47.172375884Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:43:47.172537227Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:43:47.172555924Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:43:47.172565881Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:43:47.172701807Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:43:52.1914678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:43:52.22121026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:43:52.221338801Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:43:52.243721127Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:43:52.243760135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:43:52.243774254Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:43:52.243784667Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:43:52.24379321Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:43:57.266295189Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:43:57.296671542Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:43:57.296780642Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:43:57.320566868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:43:57.320624346Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:43:57.320639056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:43:57.32078737Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T00:43:57.320661218Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:43:57.320880399Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:44:02.341276346Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:44:02.372090261Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:44:02.372201773Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:44:02.396671977Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:44:02.396726718Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:44:02.396741996Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:44:02.396752874Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:44:02.396761503Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:44:07.413301623Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:44:07.442494729Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:44:07.442609716Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:44:07.466461557Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:44:07.466511682Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:44:07.466525544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:44:07.466578426Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:44:07.466587617Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:44:12.484305775Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:44:12.513981533Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:44:12.514084608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:44:12.540914688Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:44:12.540957433Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:44:12.540972073Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:44:12.54098898Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:44:12.540998055Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:44:17.556217992Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:44:17.583977081Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:44:17.584071344Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:44:17.607593305Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:44:17.607633963Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:44:17.607647152Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:44:17.60765907Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:44:17.607668593Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:44:22.623497841Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:44:22.653294648Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:44:22.653425006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:44:22.679049323Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:44:22.679101364Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:44:22.679117309Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:44:22.679128449Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:44:22.679170186Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:44:27.699230675Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:44:27.729611545Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:44:27.729923751Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:44:27.754209099Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:44:27.754261601Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:44:27.754277157Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:44:27.754286939Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:44:27.754295471Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:44:32.772302218Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:44:32.801260955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:44:32.801374662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:44:32.825935701Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:44:32.825982103Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:44:32.825995992Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:44:32.826008781Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:44:32.826018306Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:44:37.840362183Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:44:37.873480097Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:44:37.873635238Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:44:37.89821533Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:44:37.898271516Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:44:37.898287457Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:44:37.898343445Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:44:37.898353096Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:44:42.913507593Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:44:42.943314177Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:44:42.943428369Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:44:42.965410166Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:44:42.965456785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:44:42.96547069Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:44:42.965481107Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:44:42.965491007Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:44:47.984284504Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:44:48.014848317Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:44:48.014970057Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:44:48.040423572Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:44:48.040580172Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:44:48.040600996Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:44:48.040621866Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:44:48.040632147Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:44:53.06400681Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:44:53.094864489Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:44:53.095347602Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:44:53.118694434Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:44:53.118759428Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:44:53.118776533Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:44:53.118807848Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:44:53.118817025Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:44:58.135550386Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:44:58.165646674Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:44:58.165775354Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:44:58.189663241Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:44:58.189704634Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:44:58.189732711Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:44:58.189742452Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:44:58.189751495Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:45:03.204911046Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:45:03.235125289Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:45:03.235272788Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:45:03.258462704Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:45:03.25850438Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:45:03.258517149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:45:03.258529499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:45:03.258539509Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:45:08.274446519Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:45:08.303570457Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:45:08.303693025Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:45:08.327870687Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:45:08.327920364Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:45:08.327935597Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:45:08.327945781Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:45:08.327955964Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:45:13.343154405Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:45:13.374522725Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:45:13.374672066Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:45:13.397291373Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:45:13.397338778Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:45:13.39735247Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:45:13.397364847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:45:13.39737515Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:45:18.418548578Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:45:18.44971423Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:45:18.4498203Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:45:18.47408078Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:45:18.474140195Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:45:18.474155398Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:45:18.474166493Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:45:18.474175268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:45:23.492252597Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:45:23.523251197Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:45:23.523349063Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:45:23.548898453Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:45:23.548941561Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:45:23.548956542Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:45:23.548967254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:45:23.548976355Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:45:28.568273909Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:45:28.598413215Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:45:28.598536723Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:45:28.62003624Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:45:28.620074394Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:45:28.620088635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:45:28.620111767Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:45:28.620120775Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:45:33.638088425Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:45:33.669935035Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:45:33.670046689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:45:33.692353308Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:45:33.692407891Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:45:33.692423628Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:45:33.692588643Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:45:33.692601198Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:45:38.711104761Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:45:38.740403406Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:45:38.740634446Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:45:38.764802488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:45:38.764847492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:45:38.764860175Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:45:38.764872199Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:45:38.764881328Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:45:43.778581815Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:45:43.807988943Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:45:43.808107395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:45:43.830066566Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:45:43.830108442Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:45:43.830122879Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:45:43.830134671Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:45:43.830144533Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:45:48.854321667Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:45:48.881117447Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:45:48.881211698Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:45:48.904810315Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:45:48.904852872Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:45:48.904868924Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:45:48.904881425Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:45:48.904890878Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:45:53.921134593Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:45:53.951736446Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:45:53.951826897Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:45:53.974287242Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:45:53.974330128Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:45:53.974343612Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:45:53.974355125Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:45:53.974364389Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:45:58.990300952Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:45:59.020095905Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:45:59.020199957Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:45:59.047099843Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:45:59.047143898Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:45:59.047159054Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:45:59.047169314Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:45:59.047178087Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:46:04.065863812Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:46:04.100731642Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:46:04.100858066Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:46:04.125531664Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:46:04.125576003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:46:04.125591148Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:46:04.125603367Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:46:04.125613065Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:46:09.144284451Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:46:09.172573938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:46:09.172687716Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:46:09.194114013Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:46:09.194186033Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:46:09.194202869Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:46:09.194226593Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:46:09.19439707Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T00:46:09.19445076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:46:14.210818812Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:46:14.239148892Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:46:14.239284344Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:46:14.26213638Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:46:14.262178722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:46:14.262191873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:46:14.262203727Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:46:14.262213893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:46:19.284562917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:46:19.313088199Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:46:19.313213169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:46:19.334523928Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:46:19.334571478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:46:19.334587332Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:46:19.334596726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:46:19.334603784Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:46:24.348909212Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:46:24.377909693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:46:24.378024451Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:46:24.398979119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:46:24.399020225Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:46:24.399035259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:46:24.399046605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:46:24.399055974Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:46:29.416077946Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:46:29.444421139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:46:29.445038119Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:46:29.469841497Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:46:29.469882626Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:46:29.46989625Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:46:29.469907351Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:46:29.469917144Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:46:34.487168053Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:46:34.514828877Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:46:34.514939156Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:46:34.539400334Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:46:34.539456929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:46:34.53947153Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:46:34.539480797Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:46:34.539489337Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:46:39.553038835Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:46:39.580654944Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:46:39.580736687Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:46:39.606779517Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:46:39.606823756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:46:39.606838036Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:46:39.606848592Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:46:39.606857887Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:46:44.62163006Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:46:44.650289383Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:46:44.650404944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:46:44.675902148Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:46:44.675943446Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:46:44.675959961Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:46:44.675988289Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:46:44.675997353Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:46:49.697484739Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:46:49.728554933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:46:49.728651118Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:46:49.755664104Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:46:49.755709226Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:46:49.755723453Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:46:49.755735574Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:46:49.755744941Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:46:54.772852913Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:46:54.803658398Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:46:54.80375626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:46:54.825188467Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:46:54.825247396Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:46:54.82526271Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:46:54.825272572Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:46:54.825280634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:46:59.842710105Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:46:59.871959806Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:46:59.87205497Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:46:59.899268507Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:46:59.89930823Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:46:59.899366663Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:46:59.899378795Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:46:59.899387466Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:47:04.91556418Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:47:04.946732249Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:47:04.946851291Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:47:04.967410445Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:47:04.967465482Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:47:04.967494619Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:47:04.967567568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:47:04.967578345Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:47:09.986592118Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:47:10.015934275Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:47:10.016058876Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:47:10.040142246Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:47:10.040650347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:47:10.040675512Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:47:10.04068846Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:47:10.040699974Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:47:15.056312546Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:47:15.084586882Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:47:15.084709693Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:47:15.109119921Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:47:15.109183929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:47:15.109201836Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:47:15.109273692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:47:15.109284952Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:47:20.124191479Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:47:20.156617065Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:47:20.156728804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:47:20.180799176Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:47:20.180843546Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:47:20.180869496Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:47:20.180897721Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:47:20.180907653Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:47:25.199273899Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:47:25.228579076Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:47:25.22867091Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:47:25.249412906Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:47:25.249460755Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:47:25.249475795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:47:25.249497588Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:47:25.249507019Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:47:30.266056831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:47:30.297899668Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:47:30.298010064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:47:30.323151297Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:47:30.323196517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:47:30.323209704Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:47:30.323219655Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:47:30.323229847Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:47:35.338067959Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:47:35.366262834Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:47:35.366382473Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:47:35.39070045Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:47:35.390742325Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:47:35.390756974Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:47:35.390768045Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:47:35.390777782Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:47:40.411012209Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:47:40.441064178Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:47:40.441156212Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:47:40.463989153Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:47:40.464031933Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:47:40.464045336Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:47:40.46405637Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:47:40.464066166Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:47:45.481147564Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:47:45.509032653Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:47:45.509125428Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:47:45.533495021Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:47:45.533540523Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:47:45.533556196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:47:45.533567736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:47:45.533576985Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:47:50.550537393Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:47:50.579041997Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:47:50.579158261Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:47:50.599147767Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:47:50.599190504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:47:50.599204553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:47:50.599214781Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:47:50.599223377Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:47:55.617052327Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:47:55.645871854Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:47:55.645988531Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:47:55.668949092Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:47:55.668990933Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:47:55.669004201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:47:55.669015385Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:47:55.669024697Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:48:00.688284202Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:48:00.719565615Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:48:00.719674098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:48:00.74397927Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:48:00.74402755Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:48:00.744043496Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:48:00.744054639Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:48:00.744063876Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:48:05.76489584Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:48:05.794927927Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:48:05.795018714Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:48:05.814728765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:48:05.81478896Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:48:05.814803552Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:48:05.814813707Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:48:05.814822746Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:48:10.833804616Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:48:10.863412387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:48:10.863517415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:48:10.884827579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:48:10.884970107Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:48:10.88498935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:48:10.885043159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:48:10.885054174Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:48:15.904165061Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:48:15.932861908Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:48:15.932989304Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:48:15.954469574Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:48:15.954511292Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:48:15.954525174Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:48:20.973392941Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:48:21.001850882Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:48:21.001976199Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:48:21.027429135Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:48:21.027470971Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:48:21.027485687Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:48:21.027496604Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:48:21.027506386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:48:26.044305152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:48:26.074799046Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:48:26.074926847Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:48:26.095899154Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:48:26.095957009Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:48:26.095974002Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:48:26.095984658Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:48:26.095992749Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:48:31.115810517Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:48:31.144699141Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:48:31.144809061Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:48:31.168739718Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:48:31.168804456Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:48:31.168821634Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:48:31.168833854Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:48:31.168845586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:48:36.185288654Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:48:36.215637367Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:48:36.21575696Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:48:36.239656782Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:48:36.239704565Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:48:36.239719842Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:48:36.239729979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:48:36.239737134Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:48:41.255191707Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:48:41.284872249Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:48:41.28499389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:48:41.311029973Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:48:41.311073517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:48:41.311089835Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:48:41.311122233Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:48:41.311132053Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:48:46.327516609Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:48:46.357119807Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:48:46.357223607Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:48:46.382766507Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:48:46.382810441Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:48:46.382825515Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:48:46.382838303Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:48:46.382847654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:48:51.399729665Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:48:51.42840924Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:48:51.42858518Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:48:51.4493324Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:48:51.44937948Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:48:51.449392237Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:48:51.449402524Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:48:51.44941195Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:48:56.467502779Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:48:56.497874891Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:48:56.498048035Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:48:56.522137052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:48:56.522178349Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:48:56.522191927Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:48:56.52226451Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:48:56.52227465Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:49:01.541314223Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:49:01.569226974Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:49:01.569384211Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:49:01.59430935Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:49:01.594350915Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:49:01.59436679Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:49:01.594396317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:49:01.594405955Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:49:06.609167906Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:49:06.638993043Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:49:06.63909637Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:49:06.664700727Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:49:06.664743899Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:49:06.664757548Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:49:06.664791914Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:49:06.664801037Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:49:11.687285306Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:49:11.715577635Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:49:11.715681592Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:49:11.738071515Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:49:11.738123683Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:49:11.738137951Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:49:11.73814976Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:49:11.738159335Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:49:16.757486599Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:49:16.786034419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:49:16.786147698Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:49:16.809574156Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:49:16.809617244Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:49:16.809631968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:49:16.809643964Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:49:16.809654463Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:49:21.826045159Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:49:21.857512591Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:49:21.8576535Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:49:21.878092285Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:49:21.878136406Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:49:21.878151865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:49:21.878163382Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:49:21.87817285Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:49:26.89530003Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:49:26.925491455Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:49:26.925585002Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:49:26.948729883Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:49:26.948773164Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:49:26.948787021Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:49:26.948798219Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:49:26.948808633Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:49:31.967384604Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:49:31.997210967Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:49:31.997314057Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:49:32.020982363Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:49:32.021027004Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:49:32.021044218Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:49:32.021055658Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:49:32.02106446Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:49:37.040005225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:49:37.070908519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:49:37.071032762Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:49:37.095501452Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:49:37.095561972Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:49:37.095576742Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:49:37.095587117Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:49:37.095596028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:49:42.117290643Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:49:42.147721384Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:49:42.147818152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:49:42.174899442Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:49:42.174959521Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:49:42.174975704Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:49:42.174986128Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:49:42.174994705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:49:47.195288381Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:49:47.226194668Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:49:47.226297068Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:49:47.249659089Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:49:47.249702843Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:49:47.249716719Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:49:47.249742531Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:49:47.249752224Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:49:52.267369012Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:49:52.297313154Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:49:52.297437256Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:49:52.321227553Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:49:52.321291421Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:49:52.321306044Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:49:52.321327261Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:49:52.32133631Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:49:57.343721434Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:49:57.370864102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:49:57.3709895Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:49:57.392229162Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:49:57.392296129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:49:57.392311446Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:49:57.392320852Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:49:57.3923291Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:50:02.443784622Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:50:02.523264471Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:50:02.523391974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:50:02.561970023Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:50:02.562019586Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:50:02.562035127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:50:02.56204588Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:50:02.56205634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:50:07.581040925Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:50:07.610531605Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:50:07.610641089Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:50:07.630812947Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:50:07.630876348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:50:07.630891023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:50:07.630901459Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:50:07.630910685Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:50:12.651279777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:50:12.68256204Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:50:12.682652943Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:50:12.708165343Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:50:12.708207177Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:50:12.708221648Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:50:12.708267663Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:50:12.708276981Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:50:17.726719135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:50:17.754613725Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:50:17.754711557Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:50:17.775219846Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:50:17.775284155Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:50:17.775299644Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:50:17.775310337Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:50:17.775319934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:50:22.791216469Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:50:22.821720881Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:50:22.821861339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:50:22.842140748Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:50:22.842182467Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:50:22.842196977Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:50:22.842217313Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:50:22.84222632Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:50:27.860160139Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:50:27.892949964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:50:27.893041338Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:50:27.913330585Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:50:27.91337454Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:50:27.913389597Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:50:32.930360819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:50:32.960141944Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:50:32.960244702Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:50:32.982970373Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:50:32.983012928Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:50:32.983029293Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:50:32.983041239Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:50:32.983051868Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:50:37.998007545Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:50:38.030682431Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:50:38.030781114Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:50:38.051937864Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:50:38.051979364Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:50:38.051995642Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:50:38.052024977Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:50:38.05203439Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:50:43.069230818Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:50:43.1023744Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:50:43.102494306Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:50:43.123833198Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:50:43.123879151Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:50:43.123893367Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:50:43.123915479Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:50:43.123922551Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:50:48.138175825Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:50:48.166567968Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:50:48.166693716Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:50:48.187900675Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:50:48.187942358Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:50:48.187956698Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:50:48.187967757Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:50:48.187977655Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:50:53.202917878Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:50:53.233586106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:50:53.233687894Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:50:53.254256957Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:50:53.254301805Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:50:53.254317534Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:50:53.254328587Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:50:53.254337286Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:50:58.271816152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:50:58.300274442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:50:58.300389326Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:50:58.323802465Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:50:58.323847606Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:50:58.323862056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:50:58.323874268Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:50:58.323884329Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:51:03.339133329Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:51:03.371048987Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:51:03.371163684Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:51:03.399940282Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:51:03.399985935Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:51:03.400002628Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:51:03.400013176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:51:03.400023358Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:51:08.415073307Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:51:08.445506763Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:51:08.445620188Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:51:08.468153159Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:51:08.468195404Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:51:08.46820891Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:51:08.46825623Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:51:08.4682657Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:51:13.48438826Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:51:13.514062944Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:51:13.514181827Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:51:13.535100656Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:51:13.535142563Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:51:13.535197172Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:51:13.535208385Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:51:13.535217457Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:51:18.555226183Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:51:18.584937754Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:51:18.585051698Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:51:18.606676232Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:51:18.60673197Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:51:23.618621443Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:51:23.650384712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:51:23.650478672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:51:23.672142402Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:51:23.672186122Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:51:23.67219968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:51:23.672246134Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:51:23.672255888Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:51:28.687641532Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:51:28.716728171Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:51:28.71681872Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:51:28.740870797Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:51:28.740934024Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:51:28.740992672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:51:28.741004078Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:51:28.741012926Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:51:33.755476683Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:51:33.78516367Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:51:33.785286983Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:51:33.807074783Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:51:33.807115133Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:51:33.807168414Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:51:33.807179041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:51:33.807187898Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:51:38.823312216Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:51:38.855338708Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:51:38.85544492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:51:38.878035015Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:51:38.878080741Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:51:38.878094543Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:51:38.878124212Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:51:38.878133981Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:51:43.892708396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:51:43.921008011Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:51:43.921100454Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:51:43.94413159Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:51:43.944172226Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:51:48.967280289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:51:48.99746694Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:51:48.997600169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:51:49.021390164Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:51:49.021439503Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:51:49.021456007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:51:49.021479556Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:51:49.021489113Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:51:54.037115993Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:51:54.06742642Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:51:54.067542549Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:51:54.09091913Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:51:54.090959621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:51:54.091016586Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:51:54.091028293Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:51:54.091037134Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:51:59.109443951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:51:59.137819312Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:51:59.137936202Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:51:59.160248344Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:51:59.160294862Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:51:59.16030784Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:51:59.160319522Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:51:59.160329911Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:52:04.177546389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:52:04.208774813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:52:04.208907518Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:52:04.230197814Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:52:04.230253168Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:52:04.230268322Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:52:04.230278105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:52:04.230286885Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:52:09.248290341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:52:09.277928144Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:52:09.278021485Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:52:09.299433624Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:52:09.299478986Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:52:09.299492246Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:52:09.299503956Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:52:14.315082491Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:52:14.346044199Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:52:14.346136804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:52:14.374983605Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:52:14.375041633Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:52:14.375057605Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:52:14.375067685Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:52:14.375076066Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:52:19.392474412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:52:19.422738489Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:52:19.422829595Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:52:19.445084111Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:52:19.445126204Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:52:19.445140055Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:52:19.445151958Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:52:19.445161854Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:52:24.461619338Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:52:24.491484854Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:52:24.49162311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:52:24.514368209Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:52:24.514424605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:52:24.514440549Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:52:24.514451587Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:52:24.514460006Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:52:29.534977821Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:52:29.564609417Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:52:29.564738265Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:52:29.586082956Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:52:29.586124475Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:52:29.586138683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:52:29.586149906Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:52:29.586159749Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:52:34.605979331Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:52:34.634628799Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:52:34.634729315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:52:34.656772598Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:52:34.656842694Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:52:34.65685843Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:52:34.656867819Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:52:34.65687641Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:52:39.671094871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:52:39.700332256Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:52:39.700539895Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:52:39.723037184Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:52:39.723082728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:52:39.723095888Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:52:39.723106375Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:52:39.72311626Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:52:44.739001605Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:52:44.769703483Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:52:44.769798649Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:52:44.791713377Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:52:44.791795377Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:52:44.791821309Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:52:44.791831358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:52:44.791840221Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:52:49.810327911Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:52:49.841072073Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:52:49.841160903Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:52:49.861584786Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:52:49.861633798Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:52:49.861650536Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:52:49.86166068Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:52:49.861667885Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:52:54.879058599Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:52:54.907407808Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:52:54.90752448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:52:54.929014677Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:52:54.929059842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:52:54.929075762Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:52:54.929086714Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:52:54.929094165Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:52:59.946707649Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:52:59.974938373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:52:59.975032209Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:52:59.99559995Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:52:59.995633727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:52:59.995646304Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:52:59.995657712Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:52:59.995667799Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:53:05.012603955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:53:05.041690098Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:53:05.041843385Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:53:05.064643165Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:53:05.064687866Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:53:05.064732817Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:53:05.064743953Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:53:05.064752578Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:53:10.083000472Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:53:10.111941331Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:53:10.112059632Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:53:10.133787456Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:53:10.133831007Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:53:10.133844775Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:53:10.133913201Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:53:10.133924834Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:53:15.153281469Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:53:15.182866781Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:53:15.182976594Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:53:15.20451893Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:53:15.20457968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:53:15.204593806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:53:15.204603252Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:53:15.20461429Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:53:20.227276716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:53:20.257137616Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:53:20.257228036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:53:20.280750506Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:53:20.280792774Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:53:20.28080824Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:53:20.28081825Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:53:25.294296314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:53:25.324689217Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:53:25.324782058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:53:25.346776943Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:53:25.346822516Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:53:25.346836873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:53:25.346847914Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:53:25.346857251Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:53:30.365293603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:53:30.393192644Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:53:30.393297528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:53:30.414500067Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:53:30.414546331Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:53:30.41456031Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:53:30.414572159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:53:30.414581895Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:53:35.430477522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:53:35.460086093Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:53:35.460178191Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:53:35.481810039Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:53:35.481851651Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:53:35.481865657Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:53:35.48187729Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:53:35.481887147Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:53:40.499549846Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:53:40.527712903Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:53:40.52781993Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:53:40.551684159Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:53:40.551729451Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:53:40.551743315Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:53:40.551754637Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:53:45.567698236Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:53:45.596570453Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:53:45.596687681Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:53:45.622638761Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:53:45.622682493Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:53:45.622696752Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:53:45.622708608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:53:45.622718998Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:53:50.638994265Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:53:50.667023054Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:53:50.667115197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:53:50.689600821Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:53:50.68964047Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:53:50.689653582Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:53:50.689663673Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:53:50.689674284Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:53:55.706380284Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:53:55.735340278Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:53:55.735451734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:53:55.757031778Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:53:55.757074953Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:53:55.757087968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:53:55.757099617Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:53:55.757109776Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:54:00.774207806Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:54:00.802843648Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:54:00.802963969Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:54:00.823318107Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:54:00.82373077Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:54:00.823932053Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:54:00.824300916Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:54:00.824689509Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:54:05.841583239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:54:05.872027799Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:54:05.872119492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:54:05.899039334Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:54:05.899089636Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:54:05.899104996Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:54:05.899115831Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:54:05.899124087Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:54:10.917821326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:54:10.947454461Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:54:10.947591105Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:54:10.971352485Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:54:10.971395268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:54:10.971410512Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:54:10.971423992Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:54:10.971434851Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:54:15.989272299Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:54:16.019144772Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:54:16.019263528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:54:16.04353069Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:54:16.043575078Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:54:16.043603676Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:54:16.043614052Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:54:16.043622628Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:54:21.063045395Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:54:21.094542428Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:54:21.094634347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:54:21.118805118Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:54:21.11886345Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:54:21.118881475Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:54:21.118891281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:54:21.118899954Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:54:26.137111927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:54:26.165784897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:54:26.165877488Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:54:26.186125935Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:54:26.186168393Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:54:26.186181947Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:54:26.18619377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:54:26.186203966Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:54:31.205911268Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:54:31.239740008Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:54:31.2398709Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:54:31.260924402Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:54:31.260970692Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:54:31.260986392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:54:31.260997935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:54:31.261006873Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:54:36.27981849Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:54:36.308833146Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:54:36.308935803Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:54:36.33352113Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:54:36.333560943Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:54:36.333601062Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:54:36.333611813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:54:36.333620792Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:54:41.354087979Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:54:41.383211607Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:54:41.38332003Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:54:41.405014635Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:54:41.40505988Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:54:41.405074353Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:54:41.405086823Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:54:41.405095351Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:54:46.426636557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:54:46.456192907Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:54:46.456307386Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:54:46.483453952Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:54:46.483497405Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:54:46.483511458Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:54:46.483522626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:54:46.483532167Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:54:51.503495776Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:54:51.532876498Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:54:51.533000509Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:54:51.553682446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:54:51.553725654Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:54:51.553766491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:54:51.553798231Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:54:51.553807019Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:54:56.57376821Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:54:56.602705279Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:54:56.60279467Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:54:56.623921996Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:54:56.623962523Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:54:56.623977226Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:54:56.623988005Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:54:56.623997971Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:55:01.643530248Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:55:01.68031274Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:55:01.680612442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:55:01.7022287Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:55:01.702280723Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:55:01.70229604Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:55:01.702306299Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:55:01.702314824Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:55:06.719623097Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:55:06.749414946Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:55:06.749540228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:55:06.77589459Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:55:06.775956946Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:55:06.775971575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:55:06.775983716Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:55:06.776121842Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T00:55:06.775993337Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:55:11.797093754Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:55:11.825185345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:55:11.825318647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:55:11.84459899Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:55:11.844642977Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:55:11.844676284Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:55:11.844687067Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:55:11.844695574Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:55:16.859132292Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:55:16.89078505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:55:16.890890364Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:55:16.914000636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:55:16.914049008Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:55:16.914063463Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:55:16.914100468Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:55:16.914109253Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:55:21.930336817Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:55:21.963194537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:55:21.963321354Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:55:21.983890014Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:55:21.983961093Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:55:21.983976785Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:55:21.983987031Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:55:21.98399514Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:55:27.009750366Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:55:27.0411733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:55:27.041310147Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:55:27.062379756Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:55:27.062425999Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:55:27.0624412Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:55:27.062464797Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:55:27.062476356Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:55:32.079460608Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:55:32.107456025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:55:32.107536158Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:55:32.132386555Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:55:32.132439986Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:55:32.132454752Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:55:32.132483469Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:55:32.132494743Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:55:37.147917441Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:55:37.178707076Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:55:37.17880971Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:55:37.205411358Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:55:37.205455182Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:55:37.205468408Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:55:37.205487871Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:55:37.205496854Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:55:42.228290371Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:55:42.258311454Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:55:42.258430652Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:55:42.280928071Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:55:42.280989481Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:55:42.281005194Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:55:42.281015276Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:55:42.281024245Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:55:47.302279715Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:55:47.331678974Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:55:47.331807519Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:55:47.359391318Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:55:47.35943363Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:55:47.359448178Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:55:47.359461491Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:55:47.359471839Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:55:52.379832316Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:55:52.409820303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:55:52.409947264Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:55:52.433738396Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:55:52.433781121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:55:52.43379524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:55:52.433806346Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:55:57.451272162Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:55:57.478989357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:55:57.479082928Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:55:57.504053722Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:55:57.504098261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:55:57.504112991Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:55:57.50412484Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:55:57.504134198Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:56:02.523385836Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:56:02.556984834Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:56:02.557088541Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:56:02.582416899Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:56:02.582461984Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:56:02.582476868Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:56:02.582486789Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:56:02.582496323Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:56:07.600426853Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:56:07.630877052Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:56:07.630967265Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:56:07.656080343Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:56:07.65612577Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:56:07.65613941Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:56:07.656150544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:56:07.65616014Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:56:12.673201785Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:56:12.702208345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:56:12.702341372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:56:12.725483262Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:56:12.725547258Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:56:12.725562179Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:56:12.725610858Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:56:12.725621909Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:56:17.742304507Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:56:17.772172203Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:56:17.772302941Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:56:17.798217924Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:56:17.798272494Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:56:17.798288044Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:56:22.814214239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:56:22.844000072Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:56:22.844082078Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:56:22.871500387Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:56:22.871542976Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:56:22.871556069Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:56:22.871566791Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:56:22.871576878Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:56:27.889278683Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:56:27.922253585Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:56:27.922407056Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:56:27.944734012Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:56:27.944779554Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:56:27.944853814Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:56:27.944866156Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:56:27.944874831Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:56:32.964098029Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:56:33.003451612Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:56:33.003573611Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:56:33.024981456Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:56:33.025028885Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:56:33.025044766Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:56:33.025080929Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:56:33.025091155Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:56:38.041307382Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:56:38.072644227Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:56:38.072756654Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:56:38.094644335Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:56:38.094684985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:56:38.094698042Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:56:38.09470961Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:56:38.094719302Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:56:43.108493286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:56:43.135453976Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:56:43.135563142Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:56:43.159387579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:56:43.159429225Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:56:43.159441917Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:56:48.178632574Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:56:48.209551657Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:56:48.209652829Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:56:48.230183284Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:56:48.23022677Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:56:48.23028134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:56:48.230291988Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:56:48.230300304Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:56:53.246498553Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:56:53.274952039Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:56:53.275060823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:56:53.29857085Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:56:53.298612184Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:56:53.298650027Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:56:53.298677245Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:56:53.298686696Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:56:58.313951165Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:56:58.341797615Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:56:58.341918691Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:56:58.361710292Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:56:58.361752467Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:56:58.361768501Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:56:58.361780459Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:56:58.361789073Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:57:03.378305095Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:57:03.408223083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:57:03.408332229Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:57:03.42676687Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:57:03.426837114Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:57:03.426852361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:57:03.426893605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:57:03.426902545Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:57:08.443046348Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:57:08.472003638Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:57:08.472095067Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:57:08.491936357Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:57:08.491988109Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:57:08.492002353Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:57:08.492040286Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:57:08.492049618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:57:13.510486886Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:57:13.539716746Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:57:13.539827686Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:57:13.561576331Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:57:13.561618112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:57:13.561632609Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:57:13.561644973Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:57:13.56165444Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:57:18.582464Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:57:18.610933777Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:57:18.61102991Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:57:18.637737034Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:57:18.637803267Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:57:18.637819358Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:57:18.637830692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:57:18.637839321Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:57:23.654022575Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:57:23.684310886Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:57:23.684402871Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:57:23.70462753Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:57:23.704669435Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:57:23.704682169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:57:23.704693406Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:57:23.704703368Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:57:28.719160015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:57:28.748805586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:57:28.748915977Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:57:28.772391934Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:57:28.772555036Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:57:28.772574017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:57:28.772585231Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:57:28.772594511Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:57:33.788975693Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:57:33.820520313Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:57:33.820602784Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:57:33.843290766Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:57:33.843333446Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:57:33.843347259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:57:33.843359626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:57:33.843369264Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:57:38.862590979Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:57:38.892172723Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:57:38.892289904Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:57:38.917695698Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:57:38.917734178Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:57:38.917747188Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:57:38.917758555Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:57:38.917767641Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:57:43.934838601Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:57:43.964224165Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:57:43.964382474Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:57:43.987453646Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:57:43.987494565Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:57:43.987508489Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:57:43.987519675Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:57:43.987529379Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:57:49.005484116Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:57:49.035526601Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:57:49.035623919Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:57:49.06169392Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:57:49.061742628Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:57:49.061758932Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:57:49.061783723Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:57:49.061795419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:57:54.077867178Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:57:54.108647961Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:57:54.108762595Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:57:54.131163233Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:57:54.131210671Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:57:54.131225308Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:57:54.131249399Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:57:54.13125913Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:57:59.148025015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:57:59.181416465Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:57:59.181531041Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:57:59.206149832Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:57:59.206191492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:57:59.206206525Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:57:59.206217081Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:57:59.206226463Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:58:04.222275166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:58:04.252006529Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:58:04.25209503Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:58:04.271571244Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:58:04.272032841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:58:04.272055549Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:58:04.272076686Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:58:04.272088768Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:58:09.288954354Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:58:09.320099179Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:58:09.320210022Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:58:09.34097708Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:58:09.341025838Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:58:09.341040518Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:58:09.341049897Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:58:09.341057182Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:58:14.357177462Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:58:14.386889379Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:58:14.387025136Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:58:14.408382778Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:58:14.40842722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:58:14.408574598Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:58:14.408589204Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:58:14.408598425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:58:19.427717325Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:58:19.458165714Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:58:19.458291184Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:58:19.485041815Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:58:19.485084597Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:58:19.485100572Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:58:19.48511197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:58:19.485121381Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:58:24.502315724Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:58:24.531742537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:58:24.531855549Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:58:24.555420906Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:58:24.555461649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:58:24.5554751Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:58:24.555487401Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:58:24.55549707Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:58:29.571452806Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:58:29.600563102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:58:29.600678936Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:58:29.624048175Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:58:29.624088816Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:58:29.624119684Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:58:29.624129516Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:58:29.624138198Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:58:34.642273893Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:58:34.66995854Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:58:34.670064831Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:58:34.692250161Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:58:34.692299903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:58:34.692314204Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:58:34.692322924Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:58:34.692331438Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:58:39.708421371Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:58:39.739466673Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:58:39.739557144Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:58:39.76472566Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:58:39.764768618Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:58:39.764784119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:58:39.76480808Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:58:39.764817107Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:58:44.781157726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:58:44.81261291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:58:44.812740987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:58:44.835459649Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:58:44.835517127Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:58:44.835533423Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:58:44.835542995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:58:44.835551332Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:58:49.851261819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:58:49.880778178Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:58:49.880913533Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:58:49.904418303Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:58:49.90453449Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:58:49.904553526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:58:49.904564185Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:58:49.904573344Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:58:54.918716153Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:58:54.951574364Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:58:54.951681974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:58:54.971934665Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:58:54.971975651Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:58:54.971989411Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:58:54.972000493Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:58:54.972011398Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:58:59.988028756Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:59:00.035525879Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:59:00.035662987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:59:00.065213951Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:59:00.065274481Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:59:00.065290895Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:59:00.065302539Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:59:00.065312433Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:59:05.079814751Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:59:05.109226365Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:59:05.109355138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:59:05.133735963Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:59:05.1338276Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:59:05.133841866Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:59:05.133850822Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:59:05.133860571Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:59:10.152026921Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:59:10.180339832Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:59:10.180548729Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:59:10.20579214Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:59:10.205834685Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:59:10.205848017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:59:10.205859425Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:59:10.205869527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:59:15.223740803Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:59:15.253190726Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:59:15.253305635Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:59:15.272955385Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:59:15.273001218Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:59:15.273016976Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:59:15.273027832Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:59:15.273038276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:59:20.294932891Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:59:20.324618804Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:59:20.324712913Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:59:20.351059604Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:59:20.351100451Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:59:20.351114049Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:59:20.35112627Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:59:20.35113585Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:59:25.368950254Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:59:25.3967739Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:59:25.39688483Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:59:25.422374843Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:59:25.422418915Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:59:25.422433273Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:59:25.42244426Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:59:25.422454649Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:59:30.440380328Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:59:30.470451814Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:59:30.47057975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:59:30.495985435Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:59:30.496026495Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:59:30.496080793Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:59:30.496138322Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:59:30.496149886Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:59:35.512965765Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:59:35.5394332Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:59:35.539546115Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:59:35.561323358Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:59:35.561365716Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:59:35.561379131Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:59:35.56138998Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:59:35.561400946Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:59:40.576746522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:59:40.608535768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:59:40.608767326Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:59:40.636900454Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:59:40.636946449Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:59:40.636959958Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:59:40.636970499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:59:40.636979813Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:59:45.653299423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:59:45.683035663Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:59:45.683130824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:59:45.706578285Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:59:45.706639833Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:59:45.70665462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:59:45.706663787Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:59:45.706672064Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:59:50.729285188Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:59:50.757819131Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:59:50.757923653Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:59:50.784187432Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:59:50.784226803Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:59:50.784251644Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:59:50.784262355Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:59:50.784271232Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T00:59:55.800937479Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T00:59:55.830630629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T00:59:55.830720997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T00:59:55.849876695Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T00:59:55.849922888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T00:59:55.84993635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T00:59:55.849947343Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T00:59:55.849956123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:00:00.873387967Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:00:00.935127873Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:00:00.935231628Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:00:00.993446048Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:00:00.993500226Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:00:00.99351645Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:00:00.993527404Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:00:00.993536781Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:00:06.035632964Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:00:06.067016058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:00:06.067110389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:00:06.089653915Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:00:06.089696879Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:00:06.089711826Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:00:06.089723872Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:00:06.089733342Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:00:11.104201874Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:00:11.133096852Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:00:11.133188972Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:00:11.155877303Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:00:11.15591773Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:00:11.155979241Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:00:11.155991013Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:00:11.155999437Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:00:16.175424819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:00:16.20368587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:00:16.203777439Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:00:16.225415129Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:00:16.225459314Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:00:16.225474407Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:00:16.22548533Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:00:16.225495062Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:00:21.242869825Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:00:21.272124376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:00:21.272220749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:00:21.296743053Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:00:21.296787961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:00:21.296802733Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:00:21.29682527Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:00:21.296835361Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:00:26.315598511Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:00:26.345194238Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:00:26.345349139Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:00:26.370930393Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:00:26.370986547Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:00:26.371002514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:00:26.371012754Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:00:26.371021518Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:00:31.390790811Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:00:31.420720529Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:00:31.420842906Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:00:31.441419972Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:00:31.44146324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:00:31.44147678Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:00:31.441487934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:00:31.441496651Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:00:36.461209814Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:00:36.490623824Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:00:36.4907127Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:00:36.51181913Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:00:36.51185998Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:00:36.51187516Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:00:36.51189932Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:00:36.511907862Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:00:41.530279646Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:00:41.558868116Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:00:41.558977488Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:00:41.581517571Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:00:41.581559977Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:00:41.581576117Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:00:41.581587302Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:00:41.581596536Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:00:46.595088875Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:00:46.626322725Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:00:46.626450381Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:00:46.651772168Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:00:46.6518146Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:00:46.651830524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:00:46.651839839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:00:46.651849494Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:00:51.672018469Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:00:51.701664321Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:00:51.701758631Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:00:51.725561661Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:00:51.725605567Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:00:51.725622716Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:00:51.725656214Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:00:51.725665908Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:00:56.746505603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:00:56.776264313Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:00:56.776372153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:00:56.800303037Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:00:56.800344686Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:00:56.800358048Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:00:56.800368486Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:00:56.800378608Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:01:01.84263487Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:01:02.020538658Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:01:02.020673771Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:01:02.145317454Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:01:02.145379373Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:01:02.145395567Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:01:02.145407999Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:01:02.145492887Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:01:07.194738825Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:01:07.225858721Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:01:07.225979394Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:01:07.247900162Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:01:07.247948199Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:01:07.247963971Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:01:07.247974799Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:01:07.247985006Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:01:12.272228801Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:01:12.30143158Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:01:12.301549201Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:01:12.327418639Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:01:12.327780369Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:01:12.327827669Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:01:12.327840324Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:01:12.327851552Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:01:17.346302125Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:01:17.37558426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:01:17.3756804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:01:17.399806243Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:01:17.399847808Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:01:17.399861246Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:01:17.399872234Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:01:17.399882297Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:01:22.418519886Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:01:22.445625385Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:01:22.445779826Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:01:22.466339765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:01:22.466381758Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:01:22.466397334Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:01:22.46640806Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:01:27.485004976Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:01:27.517996708Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:01:27.518109675Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:01:27.54161567Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:01:27.541656951Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:01:27.541672816Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:01:27.541697855Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:01:27.541709837Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:01:32.559597395Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:01:32.590512654Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:01:32.590628233Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:01:32.611412347Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:01:32.611454647Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:01:32.611469119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:01:32.611479604Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:01:32.611490591Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:01:37.631740241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:01:37.658537245Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:01:37.658652065Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:01:37.68340289Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:01:37.6834461Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:01:42.703274366Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:01:42.731210607Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:01:42.731335441Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:01:42.751995638Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:01:42.752041385Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:01:42.752055093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:01:42.752066471Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:01:42.752075838Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:01:47.771343158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:01:47.800186067Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:01:47.800310087Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:01:47.82064623Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:01:47.820689036Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:01:47.820704212Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:01:47.820716772Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:01:47.82072661Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:01:52.841261135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:01:52.870371042Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:01:52.87046375Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:01:52.893605518Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:01:52.893664027Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:01:52.893678049Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:01:52.893687311Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:01:52.893697219Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:01:57.912287224Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:01:57.947372871Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:01:57.947463647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:01:57.969637967Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:01:57.969677916Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:01:57.969691666Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:01:57.969702028Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:02:02.991301509Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:02:03.022982143Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:02:03.023079094Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:02:03.046866779Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:02:03.046912753Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:02:03.046926905Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:02:03.046937743Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:02:03.046947586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:02:08.063134607Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:02:08.093413387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:02:08.093531199Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:02:08.119460897Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:02:08.119519219Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:02:08.11953305Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:02:08.119542797Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:02:08.119551782Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:02:13.133113081Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:02:13.164080021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:02:13.16417084Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:02:13.186168229Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:02:13.186213746Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:02:13.186228449Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:02:13.186279538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:02:13.186290312Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:02:18.20426544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:02:18.235683226Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:02:18.235797846Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:02:18.258710359Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:02:18.258752209Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:02:18.258765474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:02:18.258777319Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:02:18.258787068Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:02:23.273431946Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:02:23.301957247Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:02:23.302090647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:02:23.323627977Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:02:23.323669278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:02:23.323682884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:02:23.32369279Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:02:23.323701313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:02:28.338384655Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:02:28.368361576Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:02:28.368554534Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:02:28.393346782Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:02:28.393393652Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:02:28.39340861Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:02:28.393426606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:02:28.393436045Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:02:33.406686902Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:02:33.436209002Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:02:33.436315007Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:02:33.456779857Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:02:33.456822983Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:02:33.456837215Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:02:33.456848892Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:02:33.456858679Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:02:38.472782287Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:02:38.50174466Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:02:38.501826751Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:02:38.522803964Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:02:38.522846884Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:02:38.522860654Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:02:38.522872032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:02:38.522881348Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:02:43.541272597Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:02:43.569595141Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:02:43.569712046Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:02:43.590517204Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:02:43.59056018Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:02:43.590574508Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:02:43.590586206Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:02:43.590595512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:02:48.607911929Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:02:48.639018139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:02:48.639111766Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:02:48.6619323Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:02:48.661991865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:02:48.662006678Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:02:48.662015694Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:02:48.662024824Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:02:53.678671032Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:02:53.705559606Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:02:53.706045109Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:02:53.726206252Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:02:53.726266711Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:02:53.726282465Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:02:53.726292343Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:02:58.741027574Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:02:58.769446746Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:02:58.769546925Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:02:58.793817658Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:02:58.793865663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:02:58.793880671Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:02:58.793912371Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:02:58.793923744Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:03:03.809900819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:03:03.838935731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:03:03.839054732Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:03:03.858897195Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:03:03.858938756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:03:03.858952626Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:03:03.858965048Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:03:03.858973923Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:03:08.875276782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:03:08.905202057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:03:08.905336569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:03:08.928903264Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:03:08.92894389Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:03:08.928958249Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:03:08.928970635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:03:08.928980248Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:03:13.946091576Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:03:13.974982659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:03:13.975075858Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:03:13.994635477Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:03:13.994680986Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:03:13.994695499Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:03:13.994783697Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:03:13.994795621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:03:19.014782773Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:03:19.046489968Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:03:19.046603492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:03:19.06714235Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:03:19.067186312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:03:24.083992204Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:03:24.111913485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:03:24.112024288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:03:24.133551897Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:03:24.133594649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:03:24.133649909Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:03:24.133675277Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:03:24.133692618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:03:29.148343219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:03:29.177018964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:03:29.177109443Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:03:29.197834156Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:03:29.19788301Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:03:29.197915512Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:03:29.197926264Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:03:29.197934449Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:03:34.214292376Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:03:34.246008968Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:03:34.246154719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:03:34.27076195Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:03:34.270810312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:03:34.270826552Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:03:34.270837686Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:03:34.270845908Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:03:39.288868041Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:03:39.31931598Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:03:39.319830378Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:03:39.340829469Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:03:39.341205157Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:03:39.341223842Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:03:39.341232169Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:03:39.341260456Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:03:44.359353341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:03:44.387676777Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:03:44.387756383Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:03:44.409510402Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:03:44.409555327Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:03:44.409569547Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:03:44.409580533Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:03:44.409599524Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:03:49.426426871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:03:49.454334815Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:03:49.454441996Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:03:49.474809041Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:03:49.47485267Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:03:49.474884223Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:03:49.474908162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:03:49.474917147Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:03:54.490950029Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:03:54.518044838Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:03:54.51815326Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:03:54.54379335Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:03:54.543837513Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:03:54.543852912Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:03:54.543863225Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:03:54.543872356Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:03:59.561937977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:03:59.587434961Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:03:59.58752586Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:03:59.607407875Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:03:59.607454942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:03:59.607493033Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:03:59.607504335Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:03:59.60751344Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:04:04.622352816Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:04:04.653694905Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:04:04.653817946Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:04:04.67933329Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:04:04.679381787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:04:04.679397827Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:04:04.679411084Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:04:04.679421513Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:04:09.693781166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:04:09.722811722Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:04:09.722915047Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:04:09.746490967Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:04:09.746544835Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:04:09.746560498Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:04:09.746570576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:04:09.746579415Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:04:14.767158908Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:04:14.797849813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:04:14.797977617Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:04:14.822890388Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:04:14.822934658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:04:14.8229484Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:04:14.822960105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:04:14.822969805Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:04:19.83729846Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:04:19.866673161Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:04:19.866769644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:04:19.88874147Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:04:19.888793322Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:04:19.888808948Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:04:19.888820025Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:04:19.888829196Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:04:24.906684507Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:04:24.936245163Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:04:24.936342858Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:04:24.961169321Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:04:24.961218877Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:04:24.961244892Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:04:24.961258814Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:04:24.961267665Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:04:29.980216896Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:04:30.013268044Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:04:30.013394761Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:04:30.038166683Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:04:30.038212672Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:04:30.038229097Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:04:30.038266881Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:04:30.038276234Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:04:35.054379257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:04:35.083921262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:04:35.084020868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:04:35.107773487Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:04:35.10781623Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:04:35.107829599Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:04:35.107840128Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:04:35.107850195Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:04:40.126325094Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:04:40.158624226Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:04:40.158731981Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:04:40.179400153Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:04:40.179450882Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:04:40.179466404Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:04:40.179477176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:04:40.17948708Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:04:45.195311719Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:04:45.226436397Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:04:45.22652876Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:04:45.248084088Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:04:45.248208807Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:04:45.248227916Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:04:45.248249884Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:04:45.248259452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:04:50.267691564Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:04:50.295902343Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:04:50.296015789Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:04:50.317296311Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:04:50.317338688Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:04:50.317353362Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:04:50.317364582Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:04:50.317375798Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:04:55.332790883Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:04:55.364521568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:04:55.364623117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:04:55.388197047Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:04:55.388249836Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:04:55.388264969Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:04:55.388276546Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:04:55.388284773Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:05:00.40721858Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:05:00.436991794Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:05:00.437083409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:05:00.460846444Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:05:00.460905536Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:05:00.460920209Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:05:00.460930853Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:05:00.460939493Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:05:05.47855925Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:05:05.507750216Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:05:05.507866356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:05:05.532824618Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:05:05.532868747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:05:05.53288386Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:05:05.53289614Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:05:05.532905217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:05:10.550272286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:05:10.580270916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:05:10.58069834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:05:10.602688718Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:05:10.602730961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:05:10.602744443Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:05:10.602754101Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:05:10.602764018Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:05:15.618710364Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:05:15.648182513Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:05:15.648288059Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:05:15.672626811Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:05:15.672682504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:05:15.672698422Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:05:15.672709623Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:05:15.672718237Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:05:20.688320857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:05:20.717971004Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:05:20.718065354Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:05:20.740212393Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:05:20.740266953Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:05:20.740283026Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:05:20.740293839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:05:20.740302081Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:05:25.759908082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:05:25.790434424Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:05:25.790543537Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:05:25.814920822Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:05:25.815370849Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:05:25.815519366Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:05:25.815534658Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:05:25.815546338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:05:30.832594781Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:05:30.859256432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:05:30.859357448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:05:30.883840327Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:05:30.883899301Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:05:30.883915077Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:05:30.883925768Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:05:30.883934037Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:05:35.902571309Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:05:35.933798489Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:05:35.933912291Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:05:35.955002632Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:05:35.955041684Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:05:35.955079297Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:05:35.955091114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:05:35.955099484Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:05:40.975264457Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:05:41.005296411Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:05:41.005434495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:05:41.026622092Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:05:41.026681534Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:05:41.026696823Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:05:41.026747083Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:05:41.026758218Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:05:46.043921876Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:05:46.075252993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:05:46.075377342Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:05:46.10014491Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:05:46.100186352Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:05:46.100199812Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:05:46.100219626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:05:46.100228584Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:05:51.117047135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:05:51.14692416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:05:51.147016901Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:05:51.168068202Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:05:51.168129071Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:05:51.168144556Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:05:51.168163071Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:05:51.168171452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:05:56.183847717Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:05:56.214841508Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:05:56.21493733Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:05:56.235025829Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:05:56.235071592Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:05:56.235085453Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:05:56.235095944Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:05:56.235104688Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:06:01.273718555Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:06:01.393728274Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:06:01.393867094Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:06:01.467781208Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:06:01.467930023Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:06:01.467957023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:06:01.467968343Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:06:01.467977674Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:06:06.489186124Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:06:06.518600844Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:06:06.51873434Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:06:06.542660226Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:06:06.542703718Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:06:06.542717379Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:06:06.542728909Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:06:06.542741569Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:06:11.559273633Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:06:11.588138726Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:06:11.588286832Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:06:11.612253053Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:06:11.61229457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:06:11.612308497Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:06:11.612319298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:06:11.61232901Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:06:16.632538449Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:06:16.661852916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:06:16.66196756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:06:16.686009253Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:06:16.686051194Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:06:16.686065316Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:06:16.686076371Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:06:16.686085708Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:06:21.703302452Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:06:21.732609137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:06:21.732699448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:06:21.756298483Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:06:21.756337757Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:06:21.756359946Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:06:21.756369278Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:06:21.756377658Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:06:26.771291156Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:06:26.799791006Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:06:26.799882133Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:06:26.823950279Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:06:26.823993681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:06:26.824008075Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:06:26.824036697Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:06:26.824065172Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:06:31.840499174Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:06:31.870261325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:06:31.870379138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:06:31.894449323Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:06:31.894511966Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:06:31.894527709Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:06:31.894536962Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:06:31.894545581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:06:36.913281475Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:06:36.941832206Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:06:36.941954669Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:06:36.966734962Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:06:36.966781906Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:06:36.966809218Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:06:36.966820544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:06:36.96682992Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:06:41.983473873Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:06:42.014463861Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:06:42.014564545Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:06:42.035844001Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:06:42.035886382Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:06:42.035901352Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:06:42.035913892Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:06:42.035923988Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:06:47.057903704Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:06:47.088179821Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:06:47.088326463Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:06:47.112560792Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:06:47.112609909Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:06:47.1126259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:06:47.11263563Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:06:47.112644975Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:06:52.130124375Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:06:52.159204909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:06:52.159321662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:06:52.180321142Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:06:52.180362304Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:06:52.180376434Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:06:52.180388005Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:06:52.180397029Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:06:57.195100166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:06:57.225857414Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:06:57.225977229Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:06:57.247815144Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:06:57.247862121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:06:57.247875008Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:06:57.247885759Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:06:57.247896197Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:07:02.269738467Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:07:02.299795318Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:07:02.299922812Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:07:02.322486509Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:07:02.322530464Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:07:02.322545273Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:07:02.322557837Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:07:02.322567158Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:07:07.337361072Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:07:07.366330421Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:07:07.366418762Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:07:07.391704016Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:07:07.391744361Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:07:07.391784898Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:07:07.391795158Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:07:07.391803971Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:07:12.41066932Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:07:12.441147021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:07:12.441266751Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:07:12.462303308Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:07:12.462361166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:07:12.462376348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:07:12.462386125Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:07:12.462394528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:07:17.481272071Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:07:17.510637983Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:07:17.510758576Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:07:17.534344261Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:07:17.534384192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:07:17.534418821Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:07:17.534428442Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:07:17.534436627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:07:22.554786992Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:07:22.58449782Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:07:22.584597335Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:07:22.60785975Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:07:22.607905752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:07:22.607920598Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:07:22.60793159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:07:22.607940732Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:07:27.627816787Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:07:27.657795277Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:07:27.65789983Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:07:27.683930106Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:07:27.683984247Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:07:27.684000268Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:07:27.684059298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:07:27.684069978Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:07:32.702210684Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:07:32.731358619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:07:32.731454885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:07:32.751720734Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:07:32.751777923Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:07:32.75179294Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:07:32.751802801Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:07:32.751811717Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:07:37.767882018Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:07:37.797631527Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:07:37.797762191Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:07:37.821842234Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:07:37.82188501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:07:37.821899214Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:07:37.821910466Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:07:37.821919421Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:07:42.846223128Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:07:42.873962022Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:07:42.874061553Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:07:42.89957863Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:07:42.899620796Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:07:42.8996346Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:07:42.899645779Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:07:42.899655741Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:07:47.921385862Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:07:47.951984844Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:07:47.952095192Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:07:47.978425627Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:07:47.978466734Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:07:47.978480446Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:07:47.978491179Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:07:47.978500967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:07:52.996012708Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:07:53.027542545Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:07:53.02766658Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:07:53.049130923Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:07:53.049175117Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:07:53.049211078Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:07:53.049222174Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:07:53.049230705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:07:58.063078478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:07:58.094023602Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:07:58.094123865Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:07:58.120698929Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:07:58.120742006Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:07:58.120756043Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:07:58.120767098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:07:58.120775871Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:08:03.135890505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:08:03.169335953Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:08:03.169452614Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:08:03.193977028Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:08:03.194035892Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:08:03.19405185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:08:03.19406232Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:08:03.194071192Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:08:08.212442028Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:08:08.241922352Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:08:08.242027358Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:08:08.265956132Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:08:08.266000768Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:08:08.266015311Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:08:08.266026348Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:08:08.266035856Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:08:13.279597004Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:08:13.307702499Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:08:13.307795606Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:08:13.331738258Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:08:13.331795102Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:08:13.331809792Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:08:13.331820249Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:08:13.331828848Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:08:18.352283565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:08:18.38029318Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:08:18.380401825Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:08:18.404094188Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:08:18.404150916Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:08:18.404176807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:08:18.404197848Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:08:18.404206822Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:08:23.421201926Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:08:23.45240851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:08:23.452574507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:08:23.475523807Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:08:23.475565431Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:08:23.475594492Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:08:23.47560631Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:08:23.475614876Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:08:28.492291095Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:08:28.52184697Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:08:28.521941324Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:08:28.546434557Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:08:28.546474793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:08:28.546487873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:08:28.546498529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:08:28.546506856Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:08:33.562670316Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:08:33.593063882Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:08:33.593206427Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:08:33.61533924Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:08:33.615382993Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:08:33.615397341Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:08:33.615409387Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:08:33.615418986Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:08:38.630227816Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:08:38.661373104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:08:38.661501251Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:08:38.688593244Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:08:38.688640408Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:08:38.688657462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:08:38.68866709Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:08:38.688676537Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:08:43.705175539Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:08:43.735912593Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:08:43.736008369Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:08:43.755563163Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:08:43.755606676Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:08:43.755645398Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:08:43.755656408Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:08:43.755664753Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:08:48.773291214Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:08:48.803648452Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:08:48.803876196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:08:48.823333309Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:08:48.823386722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:08:48.823402462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:08:48.823412607Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:08:48.823430396Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:08:53.840130498Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:08:53.869249438Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:08:53.869374471Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:08:53.892160147Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:08:53.892201206Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:08:53.892215283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:08:53.892226334Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:08:53.892247134Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:08:58.905446049Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:08:58.935953894Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:08:58.936047534Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:08:58.959357101Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:08:58.959398175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:08:58.959411537Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:08:58.959421965Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:08:58.959431479Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:09:03.977780331Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:09:04.004261327Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:09:04.004370801Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:09:04.02767754Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:09:04.027718555Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:09:04.027733728Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:09:04.027745649Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:09:04.02775512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:09:09.043003553Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:09:09.075025373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:09:09.075129113Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:09:09.098229316Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:09:09.098284176Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:09:09.098298097Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:09:09.098342948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:09:09.098352526Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:09:14.114271775Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:09:14.144323932Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:09:14.144415608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:09:14.167337553Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:09:14.167376584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:09:14.167390226Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:09:14.16740284Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:09:14.167412351Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:09:19.181129476Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:09:19.211072556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:09:19.211165186Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:09:19.237359231Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:09:19.237400998Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:09:19.237431878Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:09:19.237442772Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:09:19.237451164Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:09:24.253107442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:09:24.282732848Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:09:24.282836195Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:09:24.306731044Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:09:24.306771082Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:09:24.306785333Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:09:24.30679575Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:09:24.306805479Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:09:29.320022289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:09:29.350785086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:09:29.350897351Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:09:29.373878632Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:09:29.373919224Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:09:29.373933404Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:09:29.373957333Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:09:29.373966069Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:09:34.38908515Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:09:34.418008319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:09:34.418116912Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:09:34.438767754Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:09:34.43882447Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:09:34.438840159Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:09:34.438850278Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:09:34.438858622Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:09:39.455715026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:09:39.485723852Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:09:39.485820112Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:09:39.5136853Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:09:39.513732127Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:09:39.513746769Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:09:39.513757387Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:09:39.513768001Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:09:44.528776879Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:09:44.558993394Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:09:44.559113169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:09:44.579548238Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:09:44.579610664Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:09:44.579625929Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:09:44.579637158Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:09:44.579645697Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:09:49.602291721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:09:49.629193184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:09:49.629319709Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:09:49.652767826Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:09:49.652812738Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:09:49.652827762Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:09:49.652838799Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:09:49.652847302Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:09:54.669643477Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:09:54.700219823Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:09:54.70035111Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:09:54.72123063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:09:54.72129302Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:09:54.721311036Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:09:54.721321241Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:09:54.721329041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:09:59.737309932Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:09:59.768446511Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:09:59.768904708Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:09:59.794985733Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:09:59.79543719Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:09:59.795640559Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:09:59.795888122Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:09:59.796041917Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:10:04.813278084Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:10:04.844030832Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:10:04.844133958Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:10:04.870562841Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:10:04.870605902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:10:04.870621629Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:10:04.870648631Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:10:04.870657703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:10:09.888725969Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:10:09.919262305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:10:09.919362466Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:10:09.944930657Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:10:09.944972857Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:10:09.944987507Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:10:09.945034527Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:10:09.945044017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:10:14.959635675Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:10:14.98939158Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:10:14.989502339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:10:15.012542009Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:10:15.012588407Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:10:15.012602815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:10:15.012613821Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:10:15.012622503Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:10:20.033275043Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:10:20.063443171Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:10:20.063535264Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:10:20.085150746Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:10:20.085193684Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:10:20.085208412Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:10:20.085221158Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:10:20.085253048Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:10:25.102784376Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:10:25.133148979Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:10:25.133259871Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:10:25.155867347Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:10:25.155910551Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:10:25.155925171Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:10:25.155935931Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:10:25.15594546Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:10:30.170255731Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:10:30.200694624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:10:30.200818536Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:10:30.223713232Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:10:30.223759766Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:10:30.223774931Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:10:30.223784942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:10:30.223794463Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:10:35.241668326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:10:35.273032466Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:10:35.273144079Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:10:35.298135064Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:10:35.298190095Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:10:35.298206355Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:10:35.298216164Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:10:35.298225555Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:10:40.317523299Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:10:40.346331373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:10:40.346439243Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:10:40.368980852Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:10:40.369028931Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:10:40.369043056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:10:40.369053674Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:10:40.36906415Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:10:45.38729548Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:10:45.415855796Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:10:45.41594743Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:10:45.437124074Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:10:45.437182745Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:10:45.437197803Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:10:45.437207632Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:10:45.437217743Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:10:50.453999415Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:10:50.484283631Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:10:50.484373994Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:10:50.505187587Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:10:50.505246848Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:10:50.505261683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:10:50.505271245Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:10:50.505289809Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:10:55.523058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:10:55.553515474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:10:55.553625094Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:10:55.575571645Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:10:55.575616738Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:10:55.57563126Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:11:00.594515951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:11:00.624749673Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:11:00.624844454Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:11:00.646391458Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:11:00.646431858Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:11:00.646445889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:11:00.646466302Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:11:00.64647536Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:11:05.662411442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:11:05.69375656Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:11:05.693872269Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:11:05.718641514Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:11:05.718680185Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:11:05.718694517Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:11:05.71870534Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:11:05.718714159Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:11:10.738753309Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:11:10.7682673Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:11:10.768374594Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:11:10.794644604Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:11:10.794686084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:11:10.794719824Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:11:10.794730375Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:11:10.794738714Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:11:15.811289992Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:11:15.839783817Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:11:15.839891842Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:11:15.859075499Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:11:15.859119242Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:11:15.859133907Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:11:15.859146683Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:11:15.85915564Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:11:20.877925211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:11:20.907832119Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:11:20.907961131Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:11:20.929329036Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:11:20.929373068Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:11:20.929386389Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:11:20.929422469Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:11:20.929431783Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:11:25.949305258Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:11:25.977896148Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:11:25.978007553Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:11:26.000685993Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:11:26.000728175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:11:26.000776384Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:11:26.000787555Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:11:26.000796407Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:11:31.018349152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:11:31.046429482Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:11:31.046521466Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:11:31.072102812Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:11:31.072142828Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:11:31.072156926Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:11:31.072168229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:11:31.072176907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:11:36.090305385Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:11:36.121663873Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:11:36.121779919Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:11:36.146076084Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:11:36.146123058Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:11:36.146137386Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:11:36.146149781Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:11:36.14615949Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:11:41.166283176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:11:41.194841997Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:11:41.194955701Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:11:41.221347114Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:11:41.221386818Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:11:41.221402563Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:11:41.221412352Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:11:41.221422293Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:11:46.238679798Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:11:46.269317863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:11:46.269411146Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:11:46.29052447Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:11:46.290584656Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:11:46.290599686Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:11:46.290609157Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:11:46.290617501Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:11:51.307035033Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:11:51.337493377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:11:51.337609577Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:11:51.360740655Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:11:51.360797368Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:11:51.360811353Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:11:51.36084813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:11:51.360872235Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:11:56.380528971Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:11:56.410843464Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:11:56.411197529Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:11:56.436842304Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:11:56.43690011Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:11:56.436915474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:11:56.436926467Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:11:56.436935129Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:12:01.461973729Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:12:01.625264591Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:12:01.625400027Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:12:01.711554465Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:12:01.711595637Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:12:01.711609738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:12:01.711620899Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:12:01.711630976Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:12:06.733302648Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:12:06.762105053Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:12:06.762214262Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:12:06.787195015Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:12:06.787247334Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:12:06.787274322Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:12:06.787307887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:12:06.787317865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:12:11.809270697Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:12:11.835892801Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:12:11.835999578Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:12:11.858833522Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:12:11.858912801Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:12:11.858932363Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:12:11.858942496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:12:11.858950724Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:12:16.87746083Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:12:16.905511038Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:12:16.905644216Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:12:16.928869869Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:12:16.928929252Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:12:16.928987806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:12:16.92899921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:12:16.929008305Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:12:21.945600838Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:12:21.9753504Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:12:21.975471725Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:12:21.995581223Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:12:21.995638695Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:12:21.995653781Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:12:21.995673426Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:12:21.995785955Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:12:27.014274676Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:12:27.04431992Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:12:27.044524362Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:12:27.066752267Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:12:27.066796324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:12:27.06681167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:12:27.066823892Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:12:27.06683334Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:12:32.08163165Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:12:32.111385619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:12:32.111521335Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:12:32.136884988Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:12:32.136932842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:12:32.136947749Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:12:32.136958855Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:12:32.136966494Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:12:37.149388607Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:12:37.178473344Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:12:37.178567774Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:12:37.204177885Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:12:37.204232193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:12:42.223245056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:12:42.255439159Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:12:42.255535213Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:12:42.281823169Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:12:42.28187567Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:12:42.28189172Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:12:42.281902873Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:12:42.281911476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:12:47.296732132Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:12:47.328809536Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:12:47.328910067Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:12:47.354844489Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:12:47.354887396Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:12:47.35491408Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:12:47.354925529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:12:47.354934051Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:12:52.377074353Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:12:52.406391712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:12:52.406502306Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:12:52.43197161Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:12:52.432011081Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:12:57.447091252Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:12:57.477116664Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:12:57.477230764Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:12:57.497354292Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:12:57.497414476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:12:57.497428796Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:12:57.49748258Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:12:57.497492199Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:13:02.520701826Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:13:02.558436305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:13:02.558555484Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:13:02.579902667Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:13:02.579954111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:13:02.579969417Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:13:02.579981517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:13:02.579990926Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:13:07.59612168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:13:07.627032062Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:13:07.627146468Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:13:07.650586014Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:13:07.650628539Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:13:07.650643578Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:13:12.671275285Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:13:12.700955867Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:13:12.701068876Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:13:12.723381183Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:13:12.723425702Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:13:12.72344052Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:13:12.723475294Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:13:12.723485061Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:13:17.745231531Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:13:17.77208959Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:13:17.772210507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:13:17.794934375Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:13:17.79499222Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:13:17.795006981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:13:17.795017836Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:13:17.795028266Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:13:22.816225248Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:13:22.845542537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:13:22.84565737Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:13:22.867379405Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:13:22.86742281Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:13:22.867436182Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:13:22.867446791Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:13:22.867457048Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:13:27.88930052Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:13:27.917797643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:13:27.918370922Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:13:27.940810194Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:13:27.940851072Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:13:27.940864998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:13:27.940898509Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:13:27.940908003Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:13:32.958264976Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:13:32.989478726Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:13:32.989574864Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:13:33.014194808Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:13:33.014266288Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:13:33.014282826Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:13:33.014340575Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:13:33.014352978Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:13:38.027702618Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:13:38.058916568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:13:38.059041347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:13:38.084673171Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:13:38.084742913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:13:38.084759664Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:13:38.084770279Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:13:38.084851885Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:13:43.103891691Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:13:43.13474767Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:13:43.134836313Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:13:43.160736958Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:13:43.161176614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:13:43.161382269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:13:43.161543308Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:13:43.161654738Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:13:48.178364799Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:13:48.206939491Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:13:48.207030258Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:13:48.227125311Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:13:48.227183016Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:13:48.227197866Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:13:48.227208257Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:13:48.227216936Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:13:53.243769178Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:13:53.275274434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:13:53.275366173Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:13:53.297342544Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:13:53.297387687Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:13:53.297401624Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:13:53.297443699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:13:53.297453612Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:13:58.31227214Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:13:58.342530988Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:13:58.342624257Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:13:58.366438668Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:13:58.366484081Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:13:58.366499264Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:13:58.366510075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:13:58.366519586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:14:03.381104319Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:14:03.411485599Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:14:03.411590753Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:14:03.433360897Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:14:03.433420652Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:14:03.43343523Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:14:03.433445053Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:14:03.433454921Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:14:08.449165051Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:14:08.477456339Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:14:08.477570064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:14:08.498278395Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:14:08.498318894Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:14:08.498333381Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:14:08.498370867Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:14:08.498380054Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:14:13.515284529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:14:13.544012515Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:14:13.544125806Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:14:13.567768798Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:14:13.567809799Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:14:13.567823116Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:14:13.567835106Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:14:13.567844649Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:14:18.588681028Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:14:18.617310751Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:14:18.617405099Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:14:18.637736858Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:14:18.637779059Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:14:18.637806542Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:14:18.637816405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:14:18.637825137Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:14:23.652293505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:14:23.681881377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:14:23.681988872Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:14:23.705974035Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:14:23.706016122Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:14:23.706045098Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:14:23.706054497Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:14:23.706062671Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:14:28.721473403Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:14:28.752163434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:14:28.752289282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:14:28.776617215Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:14:28.776657254Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:14:28.776671942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:14:28.776683775Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:14:33.793609563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:14:33.823572628Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:14:33.823690562Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:14:33.846880728Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:14:33.84694457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:14:33.846959225Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:14:33.846969907Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:14:33.846978911Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:14:38.864266685Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:14:38.89343146Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:14:38.893541203Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:14:38.918058245Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:14:38.918117334Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:14:38.918131817Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:14:38.918141617Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:14:38.918150053Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:14:43.93501349Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:14:43.965042606Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:14:43.965155168Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:14:43.990814727Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:14:43.99087196Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:14:43.990886892Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:14:43.990896284Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:14:43.990905837Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:14:49.011125992Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:14:49.039711142Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:14:49.039809166Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:14:49.06063677Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:14:49.060696932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:14:49.06071272Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:14:49.060722252Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:14:49.060731257Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:14:54.077464007Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:14:54.108377603Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:14:54.10856793Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:14:54.131176695Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:14:54.131221659Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:14:54.131252383Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:14:54.13126656Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:14:54.131276444Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:14:59.14815126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:14:59.176787247Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:14:59.176884453Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:14:59.200173134Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:14:59.20021663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:14:59.200230409Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:14:59.200254207Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:14:59.200263394Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:15:04.214364458Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:15:04.243965756Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:15:04.24473641Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:15:04.26875827Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:15:04.268804083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:15:04.268841957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:15:04.268852757Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:15:04.268861755Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:15:09.283778003Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:15:09.314452104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:15:09.314563152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:15:09.334823634Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:15:09.334868431Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:15:09.334892486Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:15:09.334904768Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:15:09.33491359Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:15:14.352762308Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:15:14.381479149Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:15:14.381591372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:15:14.404697783Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:15:14.404737627Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:15:14.404751057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:15:14.40476266Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:15:14.404772079Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:15:19.422692865Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:15:19.452384175Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:15:19.452558241Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:15:19.475573363Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:15:19.475618597Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:15:19.475633062Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:15:19.475646044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:15:19.475654647Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:15:24.490189944Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:15:24.519357664Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:15:24.519451143Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:15:24.542126002Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:15:24.542167745Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:15:24.542217455Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:15:24.542227733Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:15:24.54225704Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:15:29.558640892Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:15:29.590561486Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:15:29.590662872Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:15:29.614942049Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:15:29.614986934Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:15:29.615000721Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:15:29.615029995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:15:29.615039228Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:15:34.633114239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:15:34.662142708Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:15:34.662270305Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:15:34.685549714Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:15:34.685599087Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:15:34.685614534Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:15:34.68562334Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:15:34.685630583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:15:39.704361831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:15:39.73295661Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:15:39.733040686Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:15:39.756904199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:15:39.756948314Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:15:39.756963942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:15:44.77430745Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:15:44.803959754Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:15:44.804075898Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:15:44.824561754Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:15:44.824603985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:15:44.824646847Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:15:44.82465847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:15:44.824667444Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:15:49.844286039Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:15:49.874788455Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:15:49.874890149Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:15:49.89809501Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:15:49.898139238Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:15:49.898153472Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:15:49.898165245Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:15:49.898174539Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:15:54.916165322Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:15:54.94532766Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:15:54.945442711Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:15:54.971544016Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:15:54.971598987Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:15:54.971615756Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:15:54.971626748Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:15:54.971636309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:15:59.988761458Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:16:00.158419279Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:16:00.158551087Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:16:00.20292575Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:16:00.202975037Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:16:00.202991773Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:16:00.203003656Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:16:00.203012526Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:16:05.221796472Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:16:05.25011193Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:16:05.250201049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:16:05.272319035Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:16:05.272373281Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:16:05.272536087Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:16:05.272551858Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:16:05.272561369Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:16:10.289115329Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:16:10.319060634Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:16:10.319182549Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:16:10.343732178Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:16:10.343789427Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:16:10.343804041Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:16:10.343812927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:16:10.343822071Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:16:15.359545679Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:16:15.389211681Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:16:15.389332487Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:16:15.415796438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:16:15.415842456Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:16:15.415856147Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:16:15.415865735Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:16:15.415874311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:16:20.435911182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:16:20.465492359Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:16:20.465607402Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:16:20.491345294Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:16:20.491390243Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:16:20.491403466Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:16:20.491413776Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:16:20.491424193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:16:25.507686936Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:16:25.538692499Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:16:25.538819846Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:16:25.562183606Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:16:25.562225587Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:16:25.56235602Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:16:25.562370587Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:16:25.562379672Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:16:30.582394226Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:16:30.613565988Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:16:30.614032529Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:16:30.638715994Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:16:30.638759999Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:16:30.638774662Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:16:30.638784816Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:16:30.638795261Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:16:35.654393619Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:16:35.686689258Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:16:35.686802776Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:16:35.70935934Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:16:35.709404969Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:16:35.709419274Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:16:35.709429597Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:16:35.709437643Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:16:40.729557477Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:16:40.756737848Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:16:40.756854857Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:16:40.779605972Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:16:40.779651417Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:16:40.779666268Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:16:40.779701472Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:16:40.77971047Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:16:45.797266779Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:16:45.827015169Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:16:45.827103464Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:16:45.850126243Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:16:45.850208245Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:16:45.850231211Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:16:45.850261812Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:16:45.850272657Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:16:50.870474966Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:16:50.900352472Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:16:50.900521599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:16:50.919892698Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:16:50.919934652Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:16:50.919949094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:16:50.919961248Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:16:50.919971287Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:16:55.93730608Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:16:55.968769489Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:16:55.968901576Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:16:55.989579516Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:16:55.989621833Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:16:55.989648533Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:16:55.989658505Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:16:55.98966691Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:17:01.009024584Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:17:01.0409702Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:17:01.041089541Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:17:01.062296642Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:17:01.062338163Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:17:01.062354575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:17:01.062365283Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:17:01.062375087Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:17:06.08159032Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:17:06.11143863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:17:06.111567971Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:17:06.137064596Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:17:06.137106656Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:17:06.137121287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:17:06.137133153Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:17:06.137142251Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:17:11.152225722Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:17:11.182672372Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:17:11.182788371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:17:11.206099542Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:17:11.206141669Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:17:11.206156311Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:17:11.206191833Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:17:11.206200824Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:17:16.220929469Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:17:16.250075412Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:17:16.250184461Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:17:16.269917525Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:17:16.269967571Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:17:16.269981646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:17:16.26999214Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:17:16.270001154Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:17:21.289377818Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:17:21.316867433Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:17:21.316959516Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:17:21.33824927Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:17:21.338291829Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:17:21.338305937Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:17:21.338326391Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:17:21.338335378Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:17:26.355318434Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:17:26.385410508Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:17:26.385502549Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:17:26.407984412Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:17:26.408028131Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:17:26.408040779Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:17:26.408051254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:17:26.408059439Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:17:31.423878675Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:17:31.450865961Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:17:31.450977137Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:17:31.470207839Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:17:31.470264992Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:17:31.470279813Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:17:31.470291009Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:17:31.470300126Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:17:36.489382019Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:17:36.51589637Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:17:36.515995926Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:17:36.535860843Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:17:36.535904509Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:17:36.535943458Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:17:36.535955126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:17:36.535965601Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:17:41.560116393Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:17:41.591218481Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:17:41.591712853Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:17:41.614634653Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:17:41.614693898Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:17:41.614709162Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:17:41.614718738Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:17:41.614727374Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:17:46.631286811Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:17:46.65955283Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:17:46.659664018Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:17:46.68544403Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:17:46.685489809Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:17:46.685503838Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:17:46.685514084Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:17:46.685524972Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:17:51.706308317Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:17:51.737420294Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:17:51.73754504Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:17:51.761314486Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:17:51.761356695Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:17:51.761370575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:17:51.761381702Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:17:51.761391021Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:17:56.778296568Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:17:56.80759395Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:17:56.807688873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:17:56.832579919Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:17:56.832622737Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:17:56.832665098Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:17:56.83267575Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:17:56.832684211Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:18:01.864357004Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:18:01.919250969Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:18:01.91934883Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:18:01.952014736Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:18:01.952062865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:18:01.952078766Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:18:01.952090568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:18:01.952099521Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:18:06.969563563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:18:06.999902626Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:18:07.000013762Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:18:07.024253304Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:18:07.024297455Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:18:07.024311688Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:18:07.024324104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:18:07.024333562Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:18:12.0427753Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:18:12.0744834Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:18:12.074578161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:18:12.094773419Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:18:12.094813522Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:18:12.094827269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:18:12.094855751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:18:12.09486658Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:18:17.112652851Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:18:17.141972221Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:18:17.142092496Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:18:17.162330304Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:18:17.162382438Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:18:17.162398082Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:18:17.162407348Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:18:17.162416715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:18:22.179695106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:18:22.209734333Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:18:22.209838099Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:18:22.231058947Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:18:22.231110178Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:18:22.231125944Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:18:22.231136376Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:18:22.231144588Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:18:27.249101797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:18:27.280094055Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:18:27.280190513Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:18:27.301351484Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:18:27.301394506Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:18:27.301408263Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:18:27.301418942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:18:27.301427287Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:18:32.3237176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:18:32.353819759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:18:32.35393863Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:18:32.376390191Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:18:32.376539766Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:18:32.37655563Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:18:32.376576708Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:18:32.376585842Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:18:37.392393867Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:18:37.423702938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:18:37.423819954Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:18:37.446159045Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:18:37.446542453Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:18:37.446566428Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:18:37.446579859Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:18:37.446591465Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:18:42.463348192Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:18:42.494016756Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:18:42.494119036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:18:42.516175979Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:18:42.516226613Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:18:42.51629153Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:18:42.516327076Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:18:42.516337302Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:18:47.530507889Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:18:47.559367181Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:18:47.559455954Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:18:47.582306235Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:18:47.582378222Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:18:52.602991335Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:18:52.630516923Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:18:52.630627875Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:18:52.651047387Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:18:52.651093146Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:18:52.65110959Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:18:52.651138091Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:18:52.651147956Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:18:57.672832078Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:18:57.704111076Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:18:57.704212121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:18:57.726546702Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:18:57.726587005Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:18:57.726600612Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:18:57.726611589Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:18:57.726620419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:19:02.747307421Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:19:02.777181271Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:19:02.777312238Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:19:02.801473394Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:19:02.801532904Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:19:02.801548341Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:19:02.801558896Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:19:02.801568165Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:19:07.817612892Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:19:07.844149993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:19:07.844292899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:19:07.866448676Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:19:07.866491677Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:19:07.866504881Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:19:07.86651491Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:19:07.866525935Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:19:12.885224304Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:19:12.914510345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:19:12.914617239Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:19:12.934391183Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:19:12.934435448Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:19:12.93446975Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:19:12.93448004Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:19:12.934489186Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:19:17.954022713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:19:17.983952408Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:19:17.98404436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:19:18.0039777Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:19:18.004038383Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:19:18.004054825Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:19:18.004065295Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:19:18.004083071Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:19:23.018543424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:19:23.050448995Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:19:23.050540986Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:19:23.071993225Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:19:23.072032863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:19:23.072046867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:19:23.072057049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:19:23.072066266Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:19:28.086301052Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:19:28.115324971Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:19:28.115441152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:19:28.136826022Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:19:28.136870208Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:19:28.136884981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:19:28.136897161Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:19:28.136907624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:19:33.151379915Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:19:33.182273421Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:19:33.182401816Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:19:33.2074949Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:19:33.207539012Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:19:33.207565489Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:19:33.20759875Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:19:33.207608541Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:19:38.226850048Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:19:38.256116073Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:19:38.256336523Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:19:38.277603349Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:19:38.277646987Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:19:38.277664798Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:19:38.277675388Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:19:38.277698287Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:19:43.290666096Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:19:43.321864419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:19:43.321975571Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:19:43.343435641Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:19:43.343477796Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:19:43.34350323Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:19:43.343514911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:19:43.343524024Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:19:48.364298974Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:19:48.391900964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:19:48.391989743Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:19:48.411954313Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:19:48.411993305Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:19:48.412006953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:19:48.412050342Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:19:48.412059212Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:19:53.427047042Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:19:53.455300728Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:19:53.455393681Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:19:53.4756345Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:19:53.475675942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:19:53.475688693Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:19:53.475700114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:19:53.475709936Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:19:58.492368951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:19:58.524814252Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:19:58.524925833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:19:58.546350774Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:19:58.546389534Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:19:58.546403605Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:19:58.546414296Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:19:58.546425028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:20:03.562427805Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:20:03.594671745Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:20:03.594778008Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:20:03.614715125Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:20:03.614761711Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:20:03.614776804Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:20:03.614787278Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:20:03.614796548Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:20:08.6355447Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:20:08.663488342Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:20:08.663600151Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:20:08.685191891Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:20:08.685251192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:20:08.685378114Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:20:08.685446159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:20:08.685509028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:20:13.701291295Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:20:13.731869513Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:20:13.731962597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:20:13.754196963Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:20:13.754252234Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:20:13.754267266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:20:13.754277327Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:20:13.75428614Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:20:18.775677578Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:20:18.804018413Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:20:18.804164263Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:20:18.824081435Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:20:18.824141523Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:20:18.824156713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:20:18.824167848Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:20:18.824255431Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T01:20:18.824625959Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:20:23.838593976Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:20:23.867952761Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:20:23.868064408Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:20:23.88995873Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:20:23.890000239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:20:23.890013794Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:20:23.890024655Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:20:23.890034934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:20:28.905674995Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:20:28.934446713Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:20:28.934539544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:20:28.954854293Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:20:28.954895993Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:20:28.954909583Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:20:28.954919874Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:20:28.9549302Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:20:33.970814803Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:20:34.001225993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:20:34.001372349Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:20:34.024359057Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:20:34.024534617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:20:34.024553435Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:20:34.024564573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:20:34.024573851Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:20:39.043859417Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:20:39.074132991Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:20:39.074251718Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:20:39.095301937Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:20:39.095346825Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:20:39.095361883Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:20:39.095400737Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:20:39.095409551Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:20:44.110716118Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:20:44.142593204Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:20:44.142726579Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:20:44.163794019Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:20:44.163851754Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:20:44.163866812Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:20:44.163877813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:20:44.163888681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:20:49.181111104Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:20:49.211692641Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:20:49.211806425Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:20:49.232228902Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:20:49.232289017Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:20:49.232305411Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:20:49.232315945Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:20:49.232324671Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:20:54.249487485Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:20:54.280121133Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:20:54.280261256Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:20:54.304720612Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:20:54.304768542Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:20:54.304782939Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:20:54.304795877Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:20:54.304805079Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:20:59.319837563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:20:59.351217465Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:20:59.351383022Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:20:59.372214345Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:20:59.372269747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:20:59.372285557Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:20:59.37229751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:20:59.372308015Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:21:04.386678103Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:21:04.41710999Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:21:04.417201392Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:21:04.438339922Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:21:04.438386546Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:21:04.438401045Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:21:04.438413369Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:21:04.438422249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:21:09.454931109Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:21:09.48418177Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:21:09.484284386Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:21:09.50695853Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:21:09.507001838Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:21:09.507015207Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:21:09.507025603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:21:09.50703525Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:21:14.524268431Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:21:14.554835772Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:21:14.554930188Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:21:14.57772986Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:21:14.577787625Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:21:14.577805103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:21:14.577814431Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:21:14.577822954Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:21:19.590863534Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:21:19.62010388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:21:19.620192883Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:21:19.644108454Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:21:19.644152962Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:21:19.644166003Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:21:19.644178085Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:21:19.644187651Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:21:24.661290056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:21:24.691159059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:21:24.691330044Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:21:24.716745589Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:21:24.717181535Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:21:24.717389789Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:21:24.71754471Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:21:24.717681832Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:21:29.732288702Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:21:29.759809675Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:21:29.75990776Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:21:29.78008767Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:21:29.780144477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:21:29.780160857Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:21:29.780170477Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:21:29.780179118Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:21:34.798208662Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:21:34.829677006Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:21:34.829805089Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:21:34.850286071Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:21:34.850327037Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:21:34.85034063Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:21:34.85035235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:21:34.850361555Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:21:39.869507222Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:21:39.899267972Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:21:39.899380512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:21:39.92063706Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:21:39.920684348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:21:39.920698593Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:21:39.920709108Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:21:39.920717933Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:21:44.934536305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:21:44.963559972Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:21:44.963687783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:21:44.987818859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:21:44.987875584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:21:44.98789057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:21:44.987900049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:21:44.987908414Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:21:50.005758554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:21:50.040063197Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:21:50.040158272Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:21:50.061733769Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:21:50.061775267Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:21:50.061789441Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:21:50.061802358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:21:50.061813064Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:21:55.078040604Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:21:55.108304597Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:21:55.108495205Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:21:55.132359274Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:21:55.132477299Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:21:55.13249803Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:21:55.132509948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:21:55.132520914Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:22:00.153412518Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:22:00.190396995Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:22:00.190519795Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:22:00.238128729Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:22:00.238190653Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:22:00.238205534Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:22:00.238216448Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:22:00.238225329Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:22:05.255698893Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:22:05.287900897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:22:05.28801771Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:22:05.309120332Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:22:05.309174097Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:22:05.309189161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:22:05.309200199Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:22:05.309208939Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:22:10.325632462Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:22:10.355075633Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:22:10.355187937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:22:10.375838336Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:22:10.375881264Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:22:10.375896387Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:22:10.375916678Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:22:10.375925568Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:22:15.392305938Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:22:15.423710227Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:22:15.42381191Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:22:15.447808352Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:22:15.447853722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:22:15.447867619Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:22:15.447878848Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:22:15.447889633Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:22:20.465009286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:22:20.494793748Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:22:20.494884325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:22:20.515605874Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:22:20.515647166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:22:20.515660669Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:22:20.515671765Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:22:20.51568109Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:22:25.530524312Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:22:25.557426113Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:22:25.557520949Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:22:25.578778324Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:22:25.579156852Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:22:25.579177575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:22:25.57919055Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:22:25.579202367Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:22:30.598211838Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:22:30.626228434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:22:30.626354328Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:22:30.647349915Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:22:30.64741515Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:22:30.647430375Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:22:30.647525456Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:22:30.647546677Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:22:35.663202322Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:22:35.694139552Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:22:35.694258325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:22:35.714687598Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:22:35.714730307Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:22:35.714744988Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:22:35.714780379Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:22:35.714790284Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:22:40.733444599Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:22:40.762800243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:22:40.762916425Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:22:40.78327089Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:22:40.78333168Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:22:40.783346396Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:22:40.783356149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:22:40.783364413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:22:45.803278836Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:22:45.83340211Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:22:45.833521855Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:22:45.855969853Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:22:45.856012544Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:22:45.856026593Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:22:45.856036776Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:22:45.856045418Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:22:50.876160619Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:22:50.907509949Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:22:50.907609131Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:22:50.930189084Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:22:50.930231011Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:22:50.930256137Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:22:50.930267617Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:22:50.930276338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:22:55.947599493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:22:55.978275384Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:22:55.978373319Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:22:55.99930126Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:22:55.999346119Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:22:55.999360033Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:22:55.999370594Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:22:55.999378883Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:23:01.019834518Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:23:01.053382712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:23:01.053497753Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:23:01.077133269Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:23:01.077189363Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:23:01.077204151Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:23:01.077214398Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:23:01.0772231Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:23:06.095354681Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:23:06.124747765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:23:06.12486101Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:23:06.151584284Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:23:06.151626342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:23:06.151665555Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:23:06.15168756Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:23:06.151696511Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:23:11.166342893Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:23:11.194726522Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:23:11.194821038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:23:11.214699791Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:23:11.214741822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:23:11.214755227Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:23:11.214765603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:23:11.214776125Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:23:16.228821806Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:23:16.258528298Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:23:16.258617279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:23:16.279613018Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:23:16.279655494Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:23:16.279670072Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:23:16.279700096Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:23:16.279709273Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:23:21.300297655Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:23:21.328991307Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:23:21.329128221Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:23:21.356296947Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:23:21.35634Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:23:21.356355017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:23:21.356365889Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:23:21.356376442Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:23:26.374697798Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:23:26.403156091Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:23:26.403261761Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:23:26.425914825Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:23:26.42596089Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:23:26.425976726Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:23:26.425987345Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:23:26.425997427Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:23:31.443558529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:23:31.473322198Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:23:31.473415192Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:23:31.493442083Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:23:31.493498958Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:23:31.49351228Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:23:31.493542378Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:23:31.49355203Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:23:36.513283632Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:23:36.541470903Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:23:36.541567265Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:23:36.562514284Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:23:36.562562278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:23:36.562578739Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:23:36.562589227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:23:36.562596636Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:23:41.580807709Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:23:41.610105083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:23:41.610213667Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:23:41.631582707Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:23:41.631625503Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:23:41.631639975Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:23:41.631650932Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:23:41.631660697Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:23:46.649121478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:23:46.678029128Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:23:46.67814082Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:23:46.706846167Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:23:46.706886788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:23:46.706900522Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:23:46.706912786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:23:46.706921917Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:23:51.727578052Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:23:51.75633301Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:23:51.756472353Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:23:51.779584117Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:23:51.77962392Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:23:51.779636654Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:23:51.779646471Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:23:51.779655219Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:23:56.798601087Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:23:56.829578292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:23:56.829721121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:23:56.850745923Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:23:56.850785945Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:23:56.850800285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:23:56.850810874Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:23:56.850819338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:24:01.889902964Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:24:02.029541442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:24:02.029686822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:24:02.13007286Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:24:02.130562726Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:24:02.130609218Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:24:02.130620346Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:24:02.130629039Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:24:07.155270836Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:24:07.184221248Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:24:07.184327949Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:24:07.207098518Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:24:07.207142881Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:24:07.207157374Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:24:07.207166784Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:24:07.207175344Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:24:12.230454145Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:24:12.260154707Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:24:12.260291043Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:24:12.284143269Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:24:12.284201536Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:24:12.284216929Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:24:12.284227759Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:24:12.284256228Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:24:17.302756753Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:24:17.3325996Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:24:17.332707862Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:24:17.355931538Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:24:17.35598491Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:24:17.35600053Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:24:17.356010867Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:24:17.356019563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:24:22.37227453Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:24:22.401749485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:24:22.401866103Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:24:22.426779916Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:24:22.426823473Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:24:22.426837211Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:24:22.42684657Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:24:22.42685689Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:24:27.445275653Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:24:27.474699329Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:24:27.474822639Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:24:27.495918602Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:24:27.495960727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:24:27.49597523Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:24:27.495984906Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:24:27.495993323Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:24:32.517326469Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:24:32.547045866Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:24:32.547172106Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:24:32.571596047Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:24:32.571637826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:24:32.571653411Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:24:32.571664651Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:24:32.571674062Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:24:37.587374797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:24:37.617450803Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:24:37.617567999Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:24:37.642163555Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:24:37.642209615Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:24:37.642248032Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:24:37.642259491Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:24:37.642268205Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:24:42.661288783Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:24:42.691290226Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:24:42.691383824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:24:42.71335164Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:24:42.713392865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:24:42.713407264Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:24:42.713434735Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:24:42.713444433Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:24:47.731754614Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:24:47.759125259Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:24:47.759245297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:24:47.78678166Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:24:47.78682863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:24:47.78684297Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:24:47.786852749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:24:47.786863731Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:24:52.803926732Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:24:52.834717619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:24:52.834814673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:24:52.859747584Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:24:52.859791637Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:24:52.859806127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:24:52.859816382Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:24:52.859826624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:24:57.883492113Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:24:57.91365063Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:24:57.913745742Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:24:57.934785057Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:24:57.934828048Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:24:57.934842227Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:24:57.934851256Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:24:57.934859536Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:25:02.955388849Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:25:02.985006187Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:25:02.985121925Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:25:03.009964121Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:25:03.010010158Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:25:03.010025442Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:25:03.010037468Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:25:03.010047414Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:25:08.026266271Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:25:08.055224916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:25:08.055771447Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:25:08.078302391Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:25:08.07834855Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:25:08.078361997Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:25:08.078373133Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:25:08.078383333Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:25:13.093301073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:25:13.124263404Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:25:13.124379806Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:25:13.146387477Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:25:13.146430847Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:25:13.146445621Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:25:13.146457908Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:25:13.146466839Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:25:18.163793834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:25:18.195051056Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:25:18.19516207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:25:18.218025254Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:25:18.218070109Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:25:18.218084229Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:25:18.218094556Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:25:18.218103758Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:25:23.233667468Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:25:23.263422942Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:25:23.263511533Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:25:23.288919505Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:25:23.288961926Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:25:23.288976122Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:25:23.289016268Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:25:23.289026034Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:25:28.305837759Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:25:28.335326125Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:25:28.335431355Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:25:28.360493661Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:25:28.360542809Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:25:28.360556424Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:25:28.360567964Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:25:28.360578824Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:25:33.377276453Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:25:33.407501248Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:25:33.407627716Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:25:33.427862249Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:25:33.427920302Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:25:33.427935067Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:25:33.427945868Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:25:33.42795419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:25:38.445297132Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:25:38.475954733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:25:38.476514723Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:25:38.502091211Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:25:38.502133156Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:25:38.502147267Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:25:38.502158329Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:25:38.502167629Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:25:43.521103414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:25:43.550415436Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:25:43.550525022Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:25:43.57293834Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:25:43.572979009Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:25:43.572993332Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:25:43.573004699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:25:43.573014062Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:25:48.589435887Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:25:48.619473685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:25:48.619585238Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:25:48.64486447Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:25:48.644937123Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:25:48.644953315Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:25:48.644963871Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:25:48.644972259Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:25:53.662878019Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:25:53.693263732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:25:53.693380361Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:25:53.71940762Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:25:53.719452322Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:25:53.719466147Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:25:53.719478469Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:25:53.719488717Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:25:58.73631396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:25:58.765003277Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:25:58.76510263Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:25:58.791952671Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:25:58.791995724Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:25:58.792010391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:25:58.792022376Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:25:58.792032907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:26:03.80731116Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:26:03.838163257Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:26:03.838319807Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:26:03.860157072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:26:03.86020881Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:26:03.860224643Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:26:03.860305821Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:26:03.860318702Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:26:08.877304785Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:26:08.909262187Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:26:08.909388536Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:26:08.934195853Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:26:08.934270176Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:26:08.934285698Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:26:08.934296394Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:26:08.934304509Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:26:13.951961142Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:26:13.980866816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:26:13.980965555Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:26:14.00338511Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:26:14.003433473Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:26:14.003448888Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:26:14.003460946Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:26:14.003470987Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:26:19.022299811Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:26:19.054543996Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:26:19.054646236Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:26:19.077945022Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:26:19.078000474Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:26:19.078016139Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:26:19.078026547Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:26:19.078035311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:26:24.096122391Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:26:24.12407325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:26:24.12418779Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:26:24.146995211Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:26:24.147047583Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:26:24.147063032Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:26:29.163952095Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:26:29.193502917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:26:29.19359945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:26:29.217260321Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:26:29.217317904Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:26:29.21733519Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:26:29.217345985Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:26:29.217354508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:26:34.234024544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:26:34.263198762Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:26:34.263318301Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:26:34.28396978Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:26:34.284012627Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:26:34.284026399Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:26:34.284069143Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:26:34.284079145Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:26:39.303288711Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:26:39.335525403Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:26:39.335648251Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:26:39.36334504Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:26:39.36338673Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:26:39.363403838Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:26:39.363417313Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:26:39.363427026Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:26:44.380537316Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:26:44.411156667Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:26:44.411317939Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:26:44.436033834Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:26:44.43608018Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:26:44.43609532Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:26:44.436107255Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:26:44.436116087Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:26:49.458808855Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:26:49.492841793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:26:49.492937844Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:26:49.515766561Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:26:49.515819457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:26:49.515853219Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:26:49.515866066Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:26:49.515875171Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:26:54.53739318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:26:54.565628281Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:26:54.565810678Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:26:54.588383428Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:26:54.588550575Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:26:54.588571842Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:26:54.588582044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:26:54.588599407Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:26:59.603454913Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:26:59.634393637Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:26:59.634508105Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:26:59.66243791Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:26:59.662477352Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:26:59.662492293Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:26:59.662503653Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:26:59.662513111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:27:04.67924667Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:27:04.707580413Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:27:04.707679908Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:27:04.727737462Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:27:04.727791947Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:27:04.727807345Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:27:04.727818611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:27:04.727827229Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:27:09.747487334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:27:09.77825875Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:27:09.778680642Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:27:09.80646064Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:27:09.806510145Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:27:09.806525455Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:27:09.806535722Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:27:09.806544277Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:27:14.824224908Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:27:14.854176002Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:27:14.854303072Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:27:14.874439468Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:27:14.874484049Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:27:14.874500438Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:27:14.874510211Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:27:14.874521011Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:27:19.895428771Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:27:19.924340107Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:27:19.924530984Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:27:19.948969666Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:27:19.949012622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:27:19.949028247Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:27:19.949040233Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:27:19.949049709Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:27:24.970841522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:27:25.00007455Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:27:25.000180379Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:27:25.025206806Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:27:25.025270635Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:27:25.025286148Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:27:25.025295942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:27:25.025304328Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:27:30.044905288Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:27:30.075505879Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:27:30.075608933Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:27:30.098173634Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:27:30.098221736Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:27:30.098267565Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:27:30.098284242Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:27:30.098292721Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:27:35.115600996Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:27:35.147253758Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:27:35.147367288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:27:35.171292842Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:27:35.171334383Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:27:35.171348915Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:27:35.171360884Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:27:35.171370173Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:27:40.191489949Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:27:40.218528689Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:27:40.218634616Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:27:40.239379925Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:27:40.239427612Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:27:40.239442456Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:27:40.239454107Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:27:40.239463797Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:27:45.254383245Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:27:45.285171336Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:27:45.285286676Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:27:45.307823177Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:27:45.307884034Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:27:45.307900314Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:27:45.307921382Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:27:45.307930156Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:27:50.328290621Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:27:50.357034815Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:27:50.357132209Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:27:50.384546053Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:27:50.384589555Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:27:55.39930389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:27:55.429944856Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:27:55.430071391Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:27:55.453592414Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:27:55.453655111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:27:55.453670505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:27:55.453680288Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:27:55.453688983Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:28:00.472199081Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:28:00.503838282Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:28:00.503954175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:28:00.528017822Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:28:00.528058924Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:28:00.528074394Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:28:00.52809461Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:28:00.528104314Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:28:05.546155746Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:28:05.577769667Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:28:05.577876988Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:28:05.601411172Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:28:05.60145478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:28:05.601468294Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:28:10.618295675Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:28:10.647747352Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:28:10.647862429Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:28:10.671122749Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:28:10.671167247Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:28:10.671180417Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:28:10.671190706Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:28:10.671201054Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:28:15.689316578Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:28:15.718886271Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:28:15.719061647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:28:15.741512375Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:28:15.741558596Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:28:15.741573752Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:28:15.741616832Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:28:15.741627703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:28:20.762639637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:28:20.79033643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:28:20.790417448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:28:20.816486678Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:28:20.816533737Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:28:20.8165481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:28:20.81655802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:28:20.816567549Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:28:25.836169305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:28:25.863522412Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:28:25.863647651Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:28:25.886122571Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:28:25.88618675Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:28:25.886201479Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:28:25.886211915Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:28:25.886220209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:28:30.89919509Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:28:30.928075023Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:28:30.928179954Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:28:30.950978202Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:28:30.951031011Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:28:30.951046476Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:28:30.951056999Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:28:30.951065492Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:28:35.968283029Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:28:35.997499514Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:28:35.997592033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:28:36.019964122Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:28:36.020017592Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:28:36.020033025Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:28:36.020043035Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:28:36.020052013Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:28:41.037280145Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:28:41.066891939Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:28:41.066984668Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:28:41.091089887Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:28:41.091132101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:28:41.091146227Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:28:41.091156985Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:28:41.091166597Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:28:46.105301282Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:28:46.135209472Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:28:46.135337266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:28:46.159766765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:28:46.159807002Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:28:46.159821462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:28:46.159832089Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:28:46.159842213Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:28:51.174548793Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:28:51.204005296Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:28:51.204099389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:28:51.226856231Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:28:51.226900431Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:28:51.226936035Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:28:51.226946118Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:28:51.226955205Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:28:56.244349575Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:28:56.273139345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:28:56.273225532Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:28:56.294202746Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:28:56.294277576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:28:56.29429332Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:28:56.294372563Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:28:56.294383322Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:29:01.311828829Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:29:01.340779423Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:29:01.340873462Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:29:01.366111618Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:29:01.366153749Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:29:01.366166942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:29:01.366177494Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:29:01.366186329Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:29:06.383208467Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:29:06.4143329Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:29:06.414436243Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:29:06.440274825Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:29:06.440319566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:29:06.440334579Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:29:06.440346292Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:29:06.440389252Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:29:11.46027656Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:29:11.490347648Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:29:11.490436813Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:29:11.513071073Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:29:11.513126962Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:29:11.513166074Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:29:11.513197675Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:29:11.513206607Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:29:16.529377592Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:29:16.559340087Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:29:16.55946681Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:29:16.580295757Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:29:16.580339132Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:29:16.580353689Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:29:16.580365989Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:29:16.580375131Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:29:21.601271069Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:29:21.631783212Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:29:21.631890797Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:29:21.655201507Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:29:21.655259342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:29:21.655274169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:29:21.655297618Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:29:21.655306214Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:29:26.673391475Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:29:26.705727524Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:29:26.70585324Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:29:26.729357213Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:29:26.729416112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:29:26.729431502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:29:26.729441275Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:29:26.729450025Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:29:31.746947775Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:29:31.776950255Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:29:31.777042916Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:29:31.79950574Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:29:31.799548511Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:29:31.799563252Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:29:31.799573428Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:29:31.799582314Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:29:36.815272306Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:29:36.845270284Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:29:36.845394521Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:29:36.869512599Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:29:36.869577493Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:29:36.86962086Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:29:36.869631397Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:29:36.869640786Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:29:41.890279661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:29:41.918500475Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:29:41.918597374Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:29:41.946683629Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:29:41.946727234Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:29:41.94674172Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:29:41.946752523Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:29:41.94676123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:29:46.964837932Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:29:46.994990601Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:29:46.995098595Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:29:47.015639983Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:29:47.015685486Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:29:47.015703865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:29:47.015761888Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:29:47.015773244Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:29:52.032089232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:29:52.061768459Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:29:52.061885856Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:29:52.08617061Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:29:52.086292588Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:29:52.08631147Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:29:52.086323015Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:29:52.086331924Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:29:57.103934052Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:29:57.135590925Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:29:57.135685675Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:29:57.158693987Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:29:57.158741786Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:29:57.158756204Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:29:57.158767701Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:30:02.294676511Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:30:02.502621568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:30:02.502739765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:30:02.606382266Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:30:02.606449497Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:30:02.606466509Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:30:02.606475461Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:30:02.606483753Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:30:07.636006636Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:30:07.667588538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:30:07.667682367Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:30:07.68918141Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:30:07.68926724Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:30:07.68928293Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:30:07.689293243Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:30:07.68930222Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:30:12.704147858Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:30:12.735447233Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:30:12.735573967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:30:12.759948491Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:30:12.759991898Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:30:12.760005607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:30:12.760016118Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:30:12.760024828Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:30:17.775272542Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:30:17.80511029Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:30:17.805210689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:30:17.829557043Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:30:17.829610452Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:30:17.829651755Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:30:17.829663511Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:30:17.829671925Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:30:22.85203806Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:30:22.882734017Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:30:22.882858515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:30:22.908349523Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:30:22.908405042Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:30:22.908572269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:30:22.908587055Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:30:22.908596872Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:30:27.928391618Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:30:27.958705094Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:30:27.95879914Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:30:27.980928593Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:30:27.980970976Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:30:27.980985858Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:30:27.980998053Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:30:27.981006887Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:30:33.000687426Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:30:33.031328089Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:30:33.031451391Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:30:33.055522672Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:30:33.055566193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:30:33.05558079Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:30:33.055590979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:30:33.055599693Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:30:38.07287373Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:30:38.103057593Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:30:38.103149112Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:30:38.124914988Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:30:38.124956699Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:30:38.124971289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:30:38.124981692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:30:38.124992321Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:30:43.142251438Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:30:43.171487004Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:30:43.17157841Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:30:43.195301741Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:30:43.195346885Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:30:43.195362768Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:30:43.195373225Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:30:43.195381872Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:30:48.213473568Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:30:48.244718755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:30:48.244892811Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:30:48.265660427Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:30:48.266129969Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:30:48.266368087Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:30:48.266540567Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:30:48.266708375Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:30:53.282029638Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:30:53.310499142Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:30:53.310616387Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:30:53.332254352Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:30:53.332295224Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:30:53.332310047Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:30:53.332320284Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:30:53.332329673Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:30:58.347134397Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:30:58.377619382Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:30:58.377719137Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:30:58.400202659Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:30:58.400258501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:30:58.400272377Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:30:58.400282458Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:30:58.400290705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:31:03.41731788Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:31:03.450617713Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:31:03.450734131Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:31:03.474383413Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:31:03.474423957Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:31:03.474437583Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:31:03.474448807Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:31:03.474458336Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:31:08.489289034Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:31:08.519451326Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:31:08.519562199Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:31:08.54233971Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:31:08.542382166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:31:08.54239643Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:31:08.542407171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:31:08.542417349Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:31:13.559079622Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:31:13.58830852Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:31:13.588483062Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:31:13.60944562Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:31:13.609490041Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:31:13.609505946Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:31:13.609542358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:31:13.609552783Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:31:18.630269682Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:31:18.658980732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:31:18.659072941Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:31:18.680222367Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:31:18.680283659Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:31:18.680299935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:31:18.680309394Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:31:18.680328764Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:31:23.699346791Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:31:23.728136864Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:31:23.72823126Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:31:23.750797868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:31:23.750847371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:31:23.750861712Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:31:23.750872973Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:31:23.750882684Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:31:28.765558406Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:31:28.797449659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:31:28.797569234Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:31:28.816922432Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:31:28.816963053Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:31:28.816977274Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:31:28.816988771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:31:33.834176206Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:31:33.863940479Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:31:33.86403026Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:31:33.888320323Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:31:33.888772564Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:31:33.888795957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:31:33.888808869Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:31:33.888820018Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:31:38.903865333Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:31:38.933692993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:31:38.933787231Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:31:38.95457451Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:31:38.954638665Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:31:38.954664863Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:31:38.954674629Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:31:38.954748501Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:31:43.969990417Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:31:43.998897606Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:31:43.99898824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:31:44.021768284Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:31:44.021811448Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:31:44.021826285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:31:44.021838236Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:31:44.021848173Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:31:49.042182858Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:31:49.073113848Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:31:49.073208643Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:31:49.098478179Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:31:49.09851905Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:31:49.098533096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:31:49.098545312Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:31:49.098554444Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:31:54.114137389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:31:54.143875425Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:31:54.143990924Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:31:54.171180903Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:31:54.171219678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:31:54.171246621Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:31:54.171258443Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:31:54.171266486Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:31:59.186598269Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:31:59.215448218Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:31:59.215530845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:31:59.236994501Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:31:59.237037308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:31:59.237051854Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:31:59.237064627Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:31:59.237074243Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:32:04.25653609Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:32:04.284355208Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:32:04.284542904Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:32:04.305208968Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:32:04.305266318Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:32:04.305280569Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:32:09.323269503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:32:09.353183412Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:32:09.353313814Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:32:09.374440617Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:32:09.374484229Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:32:09.374498452Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:32:09.374510397Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:32:09.374518954Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:32:14.39077124Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:32:14.418862631Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:32:14.418978279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:32:14.438814807Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:32:14.438869007Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:32:14.438885022Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:32:14.43889544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:32:14.438993839Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:32:19.459390914Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:32:19.488244377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:32:19.488849557Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:32:19.509938119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:32:19.509983756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:32:19.509998481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:32:19.510008473Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:32:19.510017274Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:32:24.526290827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:32:24.555718724Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:32:24.55584742Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:32:24.57803384Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:32:24.578078231Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:32:24.57809269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:32:24.578116466Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:32:24.578125091Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:32:29.5941682Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:32:29.623549272Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:32:29.623633833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:32:29.646506257Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:32:29.646567351Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:32:29.646582392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:32:29.646593626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:32:29.646602426Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:32:34.662209191Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:32:34.691531481Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:32:34.691630648Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:32:34.712800705Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:32:34.712856798Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:32:34.712871283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:32:34.712881414Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:32:34.712889756Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:32:39.730184795Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:32:39.758522433Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:32:39.758613153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:32:39.778883805Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:32:39.778936919Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:32:39.778950571Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:32:39.778960975Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:32:39.778969635Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:32:44.796263176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:32:44.825507274Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:32:44.825597304Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:32:44.849376878Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:32:44.849419276Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:32:44.84946967Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:32:44.849481405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:32:44.849490289Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:32:49.871283576Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:32:49.900041515Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:32:49.900230371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:32:49.92060183Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:32:49.920646233Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:32:49.920662233Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:32:49.920687358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:32:49.920698123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:32:54.937318121Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:32:54.966200258Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:32:54.966305943Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:32:54.987337771Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:32:54.987384651Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:32:54.987399219Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:32:54.987408183Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:32:54.987414757Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:33:00.01373217Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:33:00.125901547Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:33:00.126042674Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:33:00.174536668Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:33:00.174588442Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:33:00.174604747Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:33:00.174616064Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:33:00.174624814Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:33:05.19353257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:33:05.221842127Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:33:05.221955319Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:33:05.244589523Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:33:05.244661877Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:33:05.244678254Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:33:05.24468825Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:33:05.244697037Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:33:10.264220433Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:33:10.295990429Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:33:10.296114452Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:33:10.318379364Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:33:10.31843574Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:33:10.318451026Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:33:10.31846143Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:33:10.318469826Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:33:15.336293326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:33:15.367308093Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:33:15.367452242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:33:15.389998434Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:33:15.390044344Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:33:15.390057587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:33:15.390067369Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:33:15.390076761Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:33:20.405277652Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:33:20.433252086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:33:20.43336045Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:33:20.456768176Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:33:20.45682571Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:33:20.456841967Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:33:20.456911987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:33:20.456922549Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:33:25.476280783Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:33:25.50754839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:33:25.50765417Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:33:25.533485872Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:33:25.533529047Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:33:25.533552235Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:33:25.533562653Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:33:25.533570826Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:33:30.551158677Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:33:30.581967211Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:33:30.582081744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:33:30.604677915Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:33:30.604723462Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:33:30.604738069Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:33:30.604749455Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:33:30.604759277Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:33:35.622291911Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:33:35.655412999Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:33:35.655522278Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:33:35.677816432Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:33:35.677857719Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:33:35.677872792Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:33:35.677883921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:33:35.677893127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:33:40.697281583Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:33:40.727172864Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:33:40.727273783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:33:40.747487406Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:33:40.747528281Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:33:40.747541669Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:33:40.747552543Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:33:40.747580623Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:33:45.764541808Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:33:45.793356068Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:33:45.793473061Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:33:45.817486661Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:33:45.817527436Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:33:45.81754039Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:33:45.817551164Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:33:45.81756067Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:33:50.837993435Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:33:50.868337184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:33:50.868502896Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:33:50.892336975Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:33:50.892382383Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:33:50.892507866Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:33:50.892564273Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:33:50.892573917Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:33:55.9091047Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:33:55.938829754Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:33:55.938940035Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:33:55.958288008Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:33:55.958344223Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:33:55.958360323Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:33:55.958422457Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:33:55.9584324Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:34:00.974779519Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:34:01.007296403Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:34:01.007411419Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:34:01.029524273Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:34:01.029587631Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:34:01.02962158Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:34:01.029649929Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:34:01.029659509Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:34:06.04729298Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:34:06.074955773Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:34:06.075048941Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:34:06.100360538Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:34:06.100486759Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:34:06.100505949Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:34:06.100543384Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:34:06.100553904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:34:11.119512777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:34:11.146107772Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:34:11.146216067Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:34:11.168314039Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:34:11.168353942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:34:11.168367117Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:34:11.168377835Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:34:11.168387608Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:34:16.185476163Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:34:16.214768913Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:34:16.214887226Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:34:16.236185998Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:34:16.236524747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:34:16.23655717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:34:16.236569267Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:34:16.236588823Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:34:21.253855619Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:34:21.28371538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:34:21.283806964Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:34:21.30768288Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:34:21.30774748Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:34:21.307763426Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:34:21.307773Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:34:21.307781629Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:34:26.325105813Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:34:26.355529527Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:34:26.355642564Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:34:26.377107239Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:34:26.37715069Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:34:26.377165114Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:34:26.377175931Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:34:26.377185269Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:34:31.395299786Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:34:31.42615693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:34:31.426288632Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:34:31.449980465Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:34:31.450022661Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:34:31.450036738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:34:31.450049008Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:34:31.450059097Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:34:36.466273422Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:34:36.494830565Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:34:36.494949074Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:34:36.519961711Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:34:36.520003173Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:34:36.520017732Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:34:36.520027029Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:34:36.520035635Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:34:41.540847387Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:34:41.568950325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:34:41.569470518Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:34:41.590390622Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:34:41.592281748Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:34:41.592309322Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:34:41.592322738Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:34:41.592333555Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:34:46.610316865Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:34:46.640213424Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:34:46.640337262Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:34:46.665325055Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:34:46.665366647Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:34:46.665380937Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:34:46.665391983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:34:46.66540142Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:34:51.685468123Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:34:51.718317523Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:34:51.718444883Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:34:51.744386407Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:34:51.744528031Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:34:51.744545599Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:34:51.744581457Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:34:51.744590476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:34:56.762174504Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:34:56.791683277Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:34:56.791774087Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:34:56.813524989Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:34:56.813564804Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:34:56.81357787Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:34:56.813588412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:34:56.813598564Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:35:01.83713591Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:35:01.917466937Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:35:01.917659732Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:35:01.993929687Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:35:01.993993052Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:35:01.994076711Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:35:01.99530351Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:35:01.995339909Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T01:35:01.99698464Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T01:35:01.997743738Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:35:07.030222071Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:35:07.061309694Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:35:07.061421459Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:35:07.084920833Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:35:07.084990222Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:35:07.085006447Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:35:07.085016282Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:35:07.085025581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:35:12.10411556Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:35:12.136286186Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:35:12.136389712Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:35:12.162163134Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:35:12.16223065Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:35:12.162257437Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:35:12.162267539Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:35:12.162276103Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:35:17.180570427Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:35:17.209170723Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:35:17.209273538Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:35:17.233626339Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:35:17.233706037Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:35:17.233722177Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:35:17.233730789Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:35:17.233739334Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:35:22.250295289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:35:22.280659841Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:35:22.280773841Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:35:22.305400324Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:35:22.305797938Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:35:22.305819568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:35:22.305831918Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:35:22.305843277Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:35:27.326277938Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:35:27.356257494Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:35:27.356382317Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:35:27.380979342Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:35:27.381023367Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:35:27.38103826Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:35:27.381049733Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:35:27.381059906Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:35:32.399788013Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:35:32.42977715Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:35:32.42987284Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:35:32.450721603Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:35:32.45076679Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:35:32.450781004Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:35:32.450793342Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:35:32.450802627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:35:37.469275443Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:35:37.499261281Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:35:37.499370546Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:35:37.519433508Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:35:37.51947501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:35:37.519489014Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:35:37.519500646Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:35:37.519508976Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:35:42.53487546Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:35:42.564260857Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:35:42.56439715Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:35:42.584400339Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:35:42.584577321Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:35:42.58459483Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:35:42.584606087Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:35:42.584614898Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:35:47.605287232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:35:47.634316768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:35:47.634414711Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:35:47.656337522Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:35:47.656383593Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:35:47.656398024Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:35:47.656451435Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:35:47.656462025Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:35:52.679160401Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:35:52.708116537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:35:52.708253257Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:35:52.727823775Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:35:52.727862993Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:35:52.727901745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:35:52.727913156Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:35:52.727921359Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:35:57.750745478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:35:57.778481277Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:35:57.778636929Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:35:57.801905989Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:35:57.801949978Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:35:57.801964864Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:35:57.801977824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:35:57.801987081Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:36:02.822794946Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:36:02.859199588Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:36:02.859315319Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:36:02.890173785Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:36:02.890296697Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:36:02.890316712Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:36:02.890352443Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:36:02.890362123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:36:07.910596403Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:36:07.940375617Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:36:07.940535915Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:36:07.964859306Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:36:07.964900914Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:36:07.964914134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:36:07.964924594Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:36:07.964933413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:36:12.985290222Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:36:13.015307015Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:36:13.015414821Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:36:13.041477493Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:36:13.041520316Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:36:13.041537905Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:36:13.041548711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:36:13.041558172Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:36:18.062405867Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:36:18.091761767Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:36:18.091975737Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:36:18.115196462Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:36:18.115252482Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:36:18.115268601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:36:18.115281022Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:36:18.115290258Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:36:23.131433551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:36:23.160042668Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:36:23.160155988Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:36:23.186393199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:36:23.186437901Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:36:23.186451697Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:36:23.186460067Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:36:23.186467298Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:36:28.203777723Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:36:28.235758533Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:36:28.235872076Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:36:28.256625381Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:36:28.256679938Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:36:28.256694777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:36:28.25670495Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:36:28.256713698Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:36:33.273051023Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:36:33.301931824Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:36:33.302052783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:36:33.329987749Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:36:33.330023882Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:36:33.330037123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:36:33.330048715Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:36:33.330058663Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:36:38.350304834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:36:38.378799572Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:36:38.37892718Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:36:38.403501191Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:36:38.40354714Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:36:38.403561214Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:36:38.403581996Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:36:38.403591292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:36:43.419277561Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:36:43.447527396Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:36:43.447654181Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:36:43.470940602Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:36:43.470984491Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:36:43.47101481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:36:43.471026166Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:36:43.471034949Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:36:48.488959665Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:36:48.519753954Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:36:48.519892478Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:36:48.542169726Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:36:48.542227212Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:36:48.54227919Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:36:48.542291772Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:36:48.542300916Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:36:53.558279701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:36:53.587535725Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:36:53.587658426Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:36:53.608697556Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:36:53.608739948Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:36:53.608754854Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:36:53.608766337Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:36:53.608775647Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:36:58.623335478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:36:58.651927027Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:36:58.652018276Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:36:58.6770621Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:36:58.677108564Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:36:58.677144379Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:36:58.67715579Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:36:58.67716463Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:37:03.695998711Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:37:03.72510133Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:37:03.72519753Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:37:03.74948629Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:37:03.749871346Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:37:03.749895904Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:37:03.749909928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:37:03.749921615Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:37:08.763125005Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:37:08.793627128Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:37:08.794171033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:37:08.817973995Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:37:08.818018122Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:37:08.818032973Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:37:08.818043546Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:37:08.818054126Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:37:13.835306785Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:37:13.864070909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:37:13.86417921Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:37:13.887139648Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:37:13.887184409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:37:13.887198099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:37:13.887209388Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:37:13.887217714Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:37:18.901924553Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:37:18.930857586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:37:18.930976294Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:37:18.950338563Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:37:18.950400205Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:37:18.950415887Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:37:18.950426384Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:37:18.950434819Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:37:23.964492067Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:37:23.994736788Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:37:23.99484795Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:37:24.019068191Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:37:24.019115024Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:37:24.019129641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:37:24.019140522Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:37:24.01914803Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:37:29.035887545Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:37:29.065666614Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:37:29.065804021Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:37:29.090163522Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:37:29.090206216Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:37:29.09021983Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:37:29.090244159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:37:29.090253652Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:37:34.110286425Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:37:34.14116059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:37:34.141256132Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:37:34.167092287Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:37:34.167133367Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:37:34.167146732Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:37:34.167156773Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:37:34.167165515Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:37:39.183765853Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:37:39.21226397Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:37:39.212368267Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:37:39.23800484Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:37:39.238047754Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:37:39.238061983Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:37:39.238074214Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:37:39.238083579Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:37:44.255287203Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:37:44.283838037Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:37:44.28392777Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:37:44.307322233Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:37:44.307379434Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:37:44.307393165Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:37:44.307403083Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:37:44.307412115Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:37:49.323767936Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:37:49.351924241Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:37:49.352017193Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:37:49.376744974Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:37:49.376786951Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:37:49.37680103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:37:49.376811655Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:37:49.376821308Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:37:54.391622898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:37:54.421660767Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:37:54.421803078Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:37:54.443961777Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:37:54.444001977Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:37:54.444015064Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:37:59.456448837Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:37:59.484702916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:37:59.484812408Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:37:59.506162935Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:37:59.506203777Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:37:59.506218394Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:37:59.50622911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:37:59.506248887Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:38:04.521831604Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:38:04.553690099Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:38:04.553799992Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:38:04.578066825Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:38:04.578124813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:38:04.578141755Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:38:04.578205463Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:38:04.578215777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:38:09.596389628Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:38:09.627505731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:38:09.627633503Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:38:09.650438321Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:38:09.650498001Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:38:09.650513598Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:38:09.6505239Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:38:09.65053291Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:38:14.6672697Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:38:14.695930429Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:38:14.696018827Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:38:14.720181113Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:38:14.720229324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:38:14.720266522Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:38:14.720275604Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:38:14.720282691Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:38:19.741944526Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:38:19.771451106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:38:19.771560834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:38:19.795648984Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:38:19.795726674Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:38:19.795741494Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:38:19.79576046Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:38:19.795769283Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:38:24.814297374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:38:24.842730335Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:38:24.842856404Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:38:24.866647997Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:38:24.866688052Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:38:24.866701734Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:38:24.866731539Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:38:24.866740506Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:38:29.885791067Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:38:29.914188165Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:38:29.914312095Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:38:29.936622613Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:38:29.936677924Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:38:29.936694336Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:38:29.936704498Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:38:29.93671335Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:38:34.953838205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:38:34.98306872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:38:34.983169126Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:38:35.008743125Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:38:35.008803607Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:38:35.008818184Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:38:35.008829596Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:38:35.008838256Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:38:40.030963961Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:38:40.063565634Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:38:40.063682737Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:38:40.09046834Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:38:40.090529357Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:38:40.09054438Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:38:40.090556266Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:38:40.090565544Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:38:45.109994754Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:38:45.139327767Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:38:45.139420921Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:38:45.164500594Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:38:45.164566217Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:38:45.164582119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:38:45.16462494Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:38:45.164634687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:38:50.178584107Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:38:50.208803094Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:38:50.208945223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:38:50.229032986Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:38:50.229084617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:38:55.244849807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:38:55.274330474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:38:55.274449935Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:38:55.296534506Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:38:55.296586253Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:38:55.296627187Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:38:55.29663904Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:38:55.296647384Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:39:00.313266056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:39:00.342383288Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:39:00.342483274Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:39:00.367396519Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:39:00.367441685Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:39:00.367506881Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:39:00.367518197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:39:00.367526604Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:39:05.384923406Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:39:05.413443075Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:39:05.413544593Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:39:05.435548298Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:39:05.435589997Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:39:05.435643142Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:39:05.435702281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:39:05.435713078Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:39:10.455069376Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:39:10.484795683Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:39:10.484887188Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:39:10.507496831Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:39:10.50754927Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:39:10.507564221Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:39:10.50757538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:39:10.507584403Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:39:15.525539998Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:39:15.5529871Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:39:15.553089492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:39:15.57317752Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:39:15.573221828Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:39:15.57324806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:39:15.573260091Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:39:15.573268498Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:39:20.590295529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:39:20.619423826Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:39:20.619520588Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:39:20.643580464Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:39:20.643623492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:39:20.64365007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:39:25.663277722Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:39:25.692971023Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:39:25.693079937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:39:25.715956999Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:39:25.715999677Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:39:25.71601539Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:39:25.716026774Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:39:25.716035402Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:39:30.732299085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:39:30.762960495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:39:30.763071167Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:39:30.790200118Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:39:30.790270649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:39:30.790287559Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:39:30.790300018Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:39:30.790308623Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:39:35.807289035Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:39:35.835277891Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:39:35.835381394Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:39:35.856990386Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:39:35.857034529Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:39:35.857048383Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:39:35.857058985Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:39:35.857068754Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:39:40.871785263Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:39:40.902152683Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:39:40.90228242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:39:40.921705533Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:39:40.921748948Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:39:40.921762474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:39:40.921773613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:39:40.921783937Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:39:45.939753539Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:39:45.967005922Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:39:45.967162299Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:39:45.990182926Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:39:45.990635683Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:39:45.990838166Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:39:45.991004293Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:39:45.991141705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:39:51.01501158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:39:51.046215901Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:39:51.046372605Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:39:51.070284725Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:39:51.070329752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:39:51.070343867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:39:51.070354193Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:39:51.070364689Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:39:56.085304078Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:39:56.117116645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:39:56.117256419Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:39:56.141814906Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:39:56.141855271Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:39:56.141870077Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:39:56.141881056Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:39:56.141889966Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:40:01.160287183Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:40:01.194372851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:40:01.194480857Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:40:01.217416605Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:40:01.217463115Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:40:01.217479335Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:40:01.217490933Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:40:01.217500177Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:40:06.234863833Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:40:06.264800032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:40:06.264915116Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:40:06.28929602Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:40:06.28934032Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:40:06.289357244Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:40:06.28936932Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:40:06.289378177Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:40:11.3053635Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:40:11.335550627Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:40:11.335684394Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:40:11.356669643Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:40:11.356713125Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:40:11.35672706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:40:11.356739194Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:40:11.356749236Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:40:16.375296951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:40:16.401964347Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:40:16.402071587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:40:16.42611089Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:40:16.426157737Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:40:16.426171533Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:40:16.426182443Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:40:16.426192706Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:40:21.441002082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:40:21.470474711Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:40:21.470590025Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:40:21.49308704Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:40:21.493154345Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:40:21.493169776Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:40:21.493179719Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:40:21.493188269Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:40:26.509269245Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:40:26.537089938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:40:26.53722169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:40:26.558487998Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:40:26.558536242Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:40:26.558549338Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:40:26.558559228Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:40:26.558568014Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:40:31.575551561Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:40:31.607926139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:40:31.608036085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:40:31.630345723Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:40:31.630388159Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:40:31.630402613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:40:31.630415073Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:40:31.630425159Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:40:36.646777422Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:40:36.675863828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:40:36.675982559Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:40:36.699649383Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:40:36.699690815Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:40:36.699704365Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:40:36.699740355Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:40:36.69974999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:40:41.715127585Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:40:41.743289216Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:40:41.743382133Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:40:41.76574417Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:40:41.765785961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:40:41.76579901Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:40:41.765809935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:40:41.765819852Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:40:46.786623726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:40:46.81550769Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:40:46.815597368Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:40:46.839537241Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:40:46.839577487Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:40:51.860077887Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:40:51.888923655Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:40:51.889025959Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:40:51.909900079Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:40:51.909949628Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:40:51.909965056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:40:51.909975469Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:40:51.909984569Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:40:56.927332329Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:40:56.954266683Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:40:56.954393481Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:40:56.976793732Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:40:56.976837879Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:40:56.976851159Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:40:56.976862803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:40:56.976882718Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:41:02.022735781Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:41:02.056163077Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:41:02.056379196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:41:02.083915464Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:41:02.083959777Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:41:02.083974954Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:41:02.083986165Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:41:02.08399563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:41:07.100368798Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:41:07.130496816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:41:07.130591732Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:41:07.152927198Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:41:07.152972915Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:41:07.152986071Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:41:07.152996371Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:41:07.153007164Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:41:12.17231966Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:41:12.201947137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:41:12.202043144Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:41:12.224965135Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:41:12.225022219Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:41:12.225038635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:41:12.225048373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:41:12.225056615Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:41:17.24493386Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:41:17.272021531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:41:17.272190223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:41:17.294173764Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:41:17.294215623Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:41:17.294229413Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:41:17.294249908Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:41:17.294259378Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:41:22.31236873Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:41:22.339688868Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:41:22.339808227Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:41:22.36374674Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:41:22.363791272Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:41:22.363805195Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:41:22.363814827Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:41:22.363824386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:41:27.382013396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:41:27.411390877Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:41:27.411507444Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:41:27.431737885Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:41:27.431781536Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:41:27.431795124Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:41:27.431807372Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:41:27.43181637Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:41:32.453301446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:41:32.479788755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:41:32.479891524Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:41:32.503795656Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:41:32.503855541Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:41:32.503870645Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:41:32.503881117Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:41:32.503889562Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:41:37.519982473Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:41:37.548271699Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:41:37.548392717Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:41:37.573504187Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:41:37.573545942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:41:37.573560856Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:41:37.5735724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:41:37.573582482Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:41:42.590713234Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:41:42.61844361Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:41:42.618540314Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:41:42.639396318Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:41:42.639451653Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:41:42.639467961Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:41:42.639480452Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:41:42.639489161Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:41:47.655152376Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:41:47.686794385Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:41:47.686904904Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:41:47.708036315Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:41:47.708081267Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:41:47.708094437Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:41:47.708104374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:41:47.708112819Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:41:52.724094589Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:41:52.753751922Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:41:52.75386338Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:41:52.777127861Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:41:52.777171949Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:41:52.777186104Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:41:52.777195374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:41:52.777206517Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:41:57.794858523Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:41:57.825424991Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:41:57.825517221Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:41:57.848006962Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:41:57.848048933Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:41:57.848104865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:41:57.848116571Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:41:57.848125999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:42:02.865849139Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:42:02.897090937Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:42:02.897184714Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:42:02.919782015Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:42:02.919851926Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:42:02.919866248Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:42:02.919876359Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:42:02.919884754Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:42:07.934547885Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:42:07.963855767Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:42:07.963965834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:42:07.986268951Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:42:07.986309006Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:42:07.986323508Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:42:07.986342932Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:42:07.986352389Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:42:13.004533992Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:42:13.036072584Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:42:13.036183805Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:42:13.057761143Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:42:13.057805167Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:42:13.057819653Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:42:13.057830257Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:42:13.057840064Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:42:18.077565738Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:42:18.106646256Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:42:18.106735234Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:42:18.130953678Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:42:18.130998953Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:42:18.131012968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:42:18.131033368Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:42:18.131043041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:42:23.147222169Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:42:23.181067975Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:42:23.18121556Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:42:23.202423451Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:42:23.202474159Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:42:23.202488953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:42:23.202500497Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:42:23.202509767Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:42:28.221248922Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:42:28.25150252Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:42:28.251614288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:42:28.27613908Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:42:28.276180687Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:42:28.276194038Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:42:28.276205536Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:42:28.276215214Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:42:33.292433003Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:42:33.319561546Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:42:33.319681754Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:42:33.340977094Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:42:33.341020068Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:42:33.341034044Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:42:33.341045428Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:42:33.341055528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:42:38.355479913Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:42:38.383150026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:42:38.383256766Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:42:38.40598127Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:42:38.406023137Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:42:38.406037633Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:42:38.406049606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:42:38.406059698Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:42:43.422139768Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:42:43.449403948Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:42:43.449519406Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:42:43.469645306Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:42:43.469688276Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:42:43.469702696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:42:43.46971457Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:42:43.469724221Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:42:48.487772789Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:42:48.51622989Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:42:48.516342552Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:42:48.54087703Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:42:48.540918022Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:42:48.540932496Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:42:48.540960239Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:42:48.540969635Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:42:53.557296959Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:42:53.585170296Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:42:53.585272473Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:42:53.609385534Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:42:58.623364408Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:42:58.652637485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:42:58.652748086Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:42:58.67583376Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:42:58.675875559Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:42:58.675888934Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:42:58.675899839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:42:58.675908338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:43:03.68808311Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:43:03.718991892Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:43:03.719106217Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:43:03.744910957Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:43:03.744970928Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:43:03.744985829Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:43:03.744996494Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:43:03.74500494Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:43:08.761272648Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:43:08.789294168Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:43:08.789409301Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:43:08.813701936Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:43:08.813745085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:43:08.813758646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:43:08.81376976Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:43:08.813778454Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:43:13.831476249Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:43:13.860692023Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:43:13.860848496Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:43:13.885730943Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:43:13.885786609Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:43:13.885802735Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:43:13.885812798Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:43:13.885821623Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:43:18.904270566Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:43:18.933491854Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:43:18.933595843Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:43:18.95938241Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:43:18.959422435Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:43:18.959435827Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:43:18.959448293Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:43:18.959457405Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:43:23.974078053Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:43:24.003611491Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:43:24.003736328Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:43:24.025872667Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:43:24.025913775Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:43:24.025952713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:43:24.025962786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:43:24.025971596Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:43:29.040721882Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:43:29.070712481Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:43:29.07081163Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:43:29.09733229Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:43:29.097375609Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:43:29.097391618Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:43:29.097402726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:43:29.097412599Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:43:34.114180783Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:43:34.143696841Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:43:34.143788381Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:43:34.164746014Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:43:34.164788908Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:43:34.164803365Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:43:34.164837632Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:43:34.164847026Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:43:39.18129288Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:43:39.210586968Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:43:39.21067834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:43:39.234069011Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:43:39.234108929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:43:44.250271807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:43:44.280093629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:43:44.280182321Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:43:44.302741452Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:43:44.302784539Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:43:44.302798402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:43:49.321376978Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:43:49.347115815Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:43:49.347215045Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:43:49.367221116Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:43:49.367280458Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:43:49.367339333Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:43:49.367358389Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:43:49.367367422Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:43:54.383255663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:43:54.412687709Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:43:54.412818099Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:43:54.43479625Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:43:54.43483838Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:43:54.43485196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:43:54.434878746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:43:54.434888437Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:43:59.452184535Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:43:59.47790478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:43:59.478020171Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:43:59.500854147Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:43:59.500894891Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:43:59.500934416Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:43:59.500946629Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:43:59.500954676Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:44:04.518076357Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:44:04.548340162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:44:04.548630152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:44:04.568766832Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:44:04.568851059Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:44:04.568925895Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:44:04.568938335Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:44:04.568947774Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:44:09.587636715Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:44:09.616316682Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:44:09.616531095Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:44:09.641044135Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:44:09.641095904Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:44:09.641111493Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:44:09.64112286Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:44:09.641131053Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:44:14.658946329Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:44:14.688337266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:44:14.688899868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:44:14.709844383Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:44:14.709903617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:44:14.70991867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:44:14.709928605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:44:14.709938177Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:44:19.728153358Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:44:19.758157977Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:44:19.758269798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:44:19.781130497Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:44:19.781175102Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:44:19.781191696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:44:19.781203544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:44:19.781213321Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:44:24.79485411Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:44:24.824942428Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:44:24.825046083Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:44:24.848590016Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:44:24.848651453Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:44:24.848666362Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:44:24.8486757Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:44:24.848684017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:44:29.864560162Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:44:29.892966445Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:44:29.89307721Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:44:29.917480677Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:44:29.917525394Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:44:29.917539578Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:44:29.917550724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:44:29.917559532Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:44:34.934463141Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:44:34.962136146Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:44:34.962274422Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:44:34.984855387Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:44:34.984911122Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:44:34.984925609Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:44:34.984935043Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:44:34.984943627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:44:40.002278256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:44:40.031946775Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:44:40.032086992Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:44:40.061860626Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:44:40.061902101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:44:40.061917466Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:44:40.061928813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:44:40.061938816Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:44:45.077594669Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:44:45.10579402Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:44:45.105892913Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:44:45.129917135Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:44:45.129974843Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:44:45.129990796Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:44:45.130001421Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:44:45.130009614Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:44:50.14876239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:44:50.17932601Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:44:50.1798578Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:44:50.203044765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:44:50.203086381Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:44:50.203100352Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:44:50.203112018Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:44:50.203120987Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:44:55.223695757Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:44:55.255972052Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:44:55.256104206Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:44:55.28168152Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:44:55.282096804Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:44:55.282293706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:44:55.282413456Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:44:55.28242721Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:45:00.300557149Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:45:00.333761879Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:45:00.333882309Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:45:00.36932258Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:45:00.369367506Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:45:00.369404816Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:45:00.36944429Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:45:00.369453634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:45:05.389849707Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:45:05.418136858Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:45:05.418261084Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:45:05.437743121Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:45:05.437788616Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:45:05.437803842Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:45:05.437815939Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:45:05.437825025Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:45:10.455154034Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:45:10.485538745Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:45:10.485645753Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:45:10.509230956Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:45:10.509320761Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:45:10.509351935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:45:10.509363006Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:45:10.509372299Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:45:15.525988322Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:45:15.554199666Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:45:15.554334726Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:45:15.574640761Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:45:15.574700664Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:45:15.574714504Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:45:15.574725361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:45:15.574733583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:45:20.596162053Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:45:20.624649754Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:45:20.624741012Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:45:20.64799286Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:45:20.648039052Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:45:20.648056383Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:45:20.648066278Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:45:20.648075042Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:45:25.663605703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:45:25.692741608Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:45:25.692870349Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:45:25.715866169Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:45:25.715905534Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:45:25.71591946Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:45:25.715930807Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:45:25.715939333Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:45:30.732292432Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:45:30.761070879Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:45:30.761185987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:45:30.783397471Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:45:30.783476939Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:45:30.783499935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:45:30.783511363Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:45:30.783520247Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:45:35.800121392Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:45:35.828963136Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:45:35.829051253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:45:35.851603679Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:45:35.85165981Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:45:35.851674403Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:45:35.851684063Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:45:35.851692968Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:45:40.867467533Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:45:40.897139262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:45:40.897253657Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:45:40.920645274Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:45:40.920687295Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:45:40.92070006Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:45:40.920720114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:45:40.920728657Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:45:45.936457991Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:45:45.963734303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:45:45.96382666Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:45:45.988993486Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:45:45.989056613Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:45:45.989070869Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:45:45.989081742Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:45:45.989090502Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:45:51.008078003Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:45:51.039432562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:45:51.039543918Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:45:51.066073376Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:45:51.066116274Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:45:51.066130215Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:45:51.066141104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:45:51.066151722Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:45:56.084335945Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:45:56.113768974Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:45:56.113859199Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:45:56.136136057Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:45:56.136181276Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:45:56.136195391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:45:56.136225016Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:45:56.136246721Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:46:01.155308315Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:46:01.185199133Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:46:01.185329435Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:46:01.209042956Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:46:01.209086043Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:46:01.209099589Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:46:01.209112709Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:46:01.209122295Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:46:06.231536208Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:46:06.258552082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:46:06.258670904Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:46:06.278858216Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:46:06.278902878Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:46:06.278916288Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:46:06.278925697Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:46:06.278934306Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:46:11.302088912Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:46:11.331783989Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:46:11.331872892Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:46:11.353734464Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:46:11.353815642Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:46:11.353831457Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:46:11.35384357Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:46:11.353964189Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:46:16.37161352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:46:16.402599849Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:46:16.402713962Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:46:16.427447259Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:46:16.427512066Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:46:16.427526228Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:46:16.427608499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:46:16.427619164Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:46:21.444184964Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:46:21.471819432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:46:21.471899529Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:46:21.492982785Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:46:21.493028501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:46:21.493043562Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:46:21.493110177Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:46:21.493121535Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:46:26.512602501Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:46:26.543077606Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:46:26.543183501Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:46:26.566256497Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:46:26.566299916Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:46:26.56631455Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:46:26.566326526Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:46:31.584907953Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:46:31.613886932Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:46:31.613995517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:46:31.638203435Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:46:31.638590556Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:46:31.638613852Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:46:31.638626054Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:46:31.638638464Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:46:36.657090778Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:46:36.687173853Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:46:36.687270172Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:46:36.712664974Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:46:36.712712205Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:46:36.712725376Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:46:36.712736783Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:46:36.712746068Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:46:41.730391687Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:46:41.760714742Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:46:41.760831098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:46:41.787043721Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:46:41.787082628Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:46:41.787096154Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:46:41.787130666Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:46:41.787139498Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:46:46.803356651Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:46:46.831909182Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:46:46.83199322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:46:46.85500655Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:46:46.855046988Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:46:46.855095389Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:46:46.85510598Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:46:46.855114403Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:46:51.870263411Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:46:51.900243795Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:46:51.900362222Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:46:51.924064322Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:46:51.924106281Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:46:51.924131265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:46:51.924142921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:46:51.924151445Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:46:56.942381679Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:46:56.973971639Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:46:56.974087861Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:46:56.996148663Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:46:56.996204028Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:46:56.996219307Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:46:56.996228866Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:46:56.996256206Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:47:02.02096326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:47:02.056843636Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:47:02.056943004Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:47:02.085099669Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:47:02.085147104Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:47:02.085162307Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:47:02.085174467Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:47:02.085193536Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:47:07.102298586Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:47:07.130357863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:47:07.130449639Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:47:07.150651117Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:47:07.150711433Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:47:07.150727451Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:47:07.150737859Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:47:07.150746422Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:47:12.170816788Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:47:12.201586598Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:47:12.201696475Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:47:12.226425695Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:47:12.226469726Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:47:12.226513791Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:47:12.226526152Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:47:12.22653499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:47:17.244782063Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:47:17.275078124Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:47:17.275187459Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:47:17.297791441Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:47:17.297836731Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:47:17.297874888Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:47:17.297884492Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:47:17.297893751Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:47:22.313549391Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:47:22.342256419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:47:22.342363709Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:47:22.366638449Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:47:22.367081219Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:47:22.367331682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:47:22.367514196Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:47:22.367644416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:47:27.388277064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:47:27.418873853Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:47:27.418974495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:47:27.442441948Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:47:27.442484966Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:47:27.442498871Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:47:27.442519217Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:47:27.442527695Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:47:32.462295989Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:47:32.490664067Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:47:32.49075734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:47:32.513751515Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:47:32.513805695Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:47:32.513821679Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:47:32.51383261Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:47:32.513840829Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:47:37.528547241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:47:37.556230524Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:47:37.55633762Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:47:37.577956323Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:47:37.578013587Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:47:37.578028259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:47:37.57803787Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:47:37.578046523Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:47:42.602607611Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:47:42.633899839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:47:42.634010016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:47:42.657720134Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:47:42.657788779Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:47:42.657803607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:47:42.657813113Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:47:42.657822651Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:47:47.675169021Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:47:47.706078577Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:47:47.706196271Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:47:47.726667467Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:47:47.72670986Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:47:47.72672263Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:47:47.726732806Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:47:47.726743397Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:47:52.744920304Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:47:52.773957599Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:47:52.774075354Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:47:52.797787103Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:47:52.797842424Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:47:52.797857774Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:47:52.79786821Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:47:52.797876542Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:47:57.81429394Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:47:57.843874137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:47:57.843967591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:47:57.868052698Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:47:57.868108737Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:47:57.868123315Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:47:57.868133284Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:47:57.868141425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:48:02.885525967Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:48:02.914211362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:48:02.914342326Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:48:02.935267614Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:48:02.935311315Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:48:02.935327419Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:48:02.9353606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:48:02.935369101Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:48:07.949220871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:48:07.978321623Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:48:07.978488529Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:48:07.999053768Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:48:07.999109682Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:48:07.999124202Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:48:07.999133834Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:48:07.999141998Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:48:13.018703153Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:48:13.049076625Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:48:13.049187612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:48:13.069333396Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:48:13.069379453Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:48:13.069395394Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:48:13.069404898Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:48:13.069413452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:48:18.088796942Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:48:18.11972358Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:48:18.119837718Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:48:18.143527019Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:48:18.143568925Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:48:18.143581576Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:48:18.143593241Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:48:18.14360367Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:48:23.158213236Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:48:23.188645826Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:48:23.188757666Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:48:23.21435154Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:48:23.214392295Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:48:23.214407757Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:48:23.214419103Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:48:23.21442794Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:48:28.23151278Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:48:28.259887044Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:48:28.259996343Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:48:28.283933622Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:48:28.283978356Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:48:28.283992283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:48:28.284026824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:48:28.284035981Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:48:33.300274405Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:48:33.328584901Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:48:33.328679029Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:48:33.351837021Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:48:33.351880256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:48:33.351925934Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:48:33.351936832Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:48:33.351948721Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:48:38.3678559Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:48:38.398377906Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:48:38.398500488Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:48:38.419846986Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:48:38.419894021Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:48:38.419908105Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:48:38.419918511Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:48:38.419929254Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:48:43.433942524Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:48:43.46399756Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:48:43.464098807Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:48:43.490001396Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:48:43.490042781Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:48:43.490074938Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:48:43.490085117Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:48:43.490093401Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:48:48.505027527Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:48:48.533502118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:48:48.533597028Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:48:48.555057447Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:48:48.555102901Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:48:48.55511717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:48:48.555128699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:48:48.555139561Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:48:53.572319646Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:48:53.601406425Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:48:53.601519768Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:48:53.627169911Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:48:53.627216127Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:48:53.62725721Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:48:53.627270381Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:48:53.62728095Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:48:58.642687031Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:48:58.673003264Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:48:58.67310966Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:48:58.697914415Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:48:58.697974133Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:48:58.697988406Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:48:58.697997194Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:48:58.698005563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:49:03.713612316Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:49:03.74370731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:49:03.743817281Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:49:03.768044463Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:49:03.76809118Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:49:03.768105404Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:49:03.768113929Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:49:03.768121065Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:49:08.785380875Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:49:08.812886637Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:49:08.812994784Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:49:08.832793636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:49:08.832835735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:49:08.832849194Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:49:08.832861241Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:49:08.832870366Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:49:13.847294698Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:49:13.87675955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:49:13.876852705Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:49:13.898222144Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:49:13.898282666Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:49:13.898298165Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:49:13.898308858Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:49:13.8983181Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:49:18.915755862Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:49:18.944163881Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:49:18.944293432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:49:18.971551475Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:49:18.971592894Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:49:18.971605805Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:49:18.97161705Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:49:18.971626874Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:49:23.986380599Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:49:24.015626484Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:49:24.015734187Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:49:24.04215488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:49:24.042195138Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:49:24.042209117Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:49:24.042220162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:49:24.042230646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:49:29.057022853Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:49:29.087566102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:49:29.087663546Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:49:29.108104854Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:49:29.108150282Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:49:29.108163881Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:49:29.108176309Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:49:29.108186417Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:49:34.124288403Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:49:34.155183434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:49:34.155288225Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:49:34.18137277Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:49:34.18141574Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:49:34.181431935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:49:34.181443013Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:49:34.181453524Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:49:39.200285713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:49:39.231397425Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:49:39.231524603Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:49:39.254220255Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:49:39.254278524Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:49:39.254294167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:49:39.254305693Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:49:39.254315297Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:49:44.271436547Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:49:44.301785416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:49:44.301912357Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:49:44.325813286Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:49:44.325860692Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:49:44.325874035Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:49:44.325883653Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:49:44.325892344Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:49:49.34197929Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:49:49.370392088Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:49:49.370504134Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:49:49.390669407Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:49:49.390710067Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:49:49.390724077Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:49:49.390735507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:49:49.390745761Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:49:54.407253079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:49:54.435883054Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:49:54.43599517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:49:54.456846448Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:49:54.45688733Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:49:54.456905329Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:49:54.456917379Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:49:54.456926947Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:49:59.475281906Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:49:59.503263744Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:49:59.503354738Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:49:59.526305927Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:49:59.526364121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:49:59.52637881Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:49:59.526388835Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:49:59.526397249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:50:04.544352232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:50:04.573059091Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:50:04.573163185Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:50:04.596953559Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:50:04.597358285Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:50:04.597382231Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:50:04.597395024Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:50:04.597406638Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:50:09.617371777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:50:09.646308058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:50:09.64643063Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:50:09.666972412Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:50:09.667030639Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:50:09.667046629Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:50:09.667107587Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:50:09.667118144Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:50:14.684299481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:50:14.714344201Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:50:14.714477682Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:50:14.739456253Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:50:14.739498343Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:50:14.739512795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:50:14.739523707Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:50:14.739533354Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:50:19.760287824Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:50:19.789769428Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:50:19.789873222Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:50:19.814736175Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:50:19.814794627Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:50:19.814810457Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:50:19.814819736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:50:19.814828541Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:50:24.833074658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:50:24.865074742Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:50:24.865198032Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:50:24.890364285Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:50:24.890402932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:50:24.890417794Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:50:29.909290049Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:50:29.938048351Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:50:29.938161432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:50:29.962999634Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:50:29.963039322Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:50:29.963054304Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:50:29.96306478Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:50:29.963073365Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:50:34.98129094Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:50:35.009174064Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:50:35.009356491Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:50:35.031398281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:50:35.031440893Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:50:35.031454851Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:50:35.031513603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:50:35.031523348Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:50:40.052292896Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:50:40.079184267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:50:40.079309741Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:50:40.099414469Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:50:40.099456973Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:50:40.099471528Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:50:40.099483735Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:50:40.099493342Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:50:45.117314116Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:50:45.14766629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:50:45.147777228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:50:45.170995488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:50:45.171070841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:50:45.171086559Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:50:45.171109329Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:50:45.171119487Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:50:50.189392663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:50:50.220609377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:50:50.220702176Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:50:50.242283328Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:50:50.24234678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:50:50.2423613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:50:50.242371735Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:50:50.242380211Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:50:55.258511068Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:50:55.290212077Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:50:55.290322835Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:50:55.315345143Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:50:55.315412813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:50:55.315427526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:50:55.315436828Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:50:55.315445039Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:51:00.334561509Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:51:00.366296534Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:51:00.366416482Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:51:00.389712097Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:51:00.389766423Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:51:00.389784061Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:51:00.389793431Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:51:00.389802092Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:51:05.404436284Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:51:05.43204918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:51:05.432168754Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:51:05.457946803Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:51:05.457989099Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:51:05.45800291Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:51:05.458013569Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:51:05.458023423Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:51:10.475099228Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:51:10.505704088Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:51:10.505816284Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:51:10.528561561Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:51:10.528621365Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:51:10.528636228Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:51:10.528646788Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:51:10.52865513Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:51:15.548274237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:51:15.577172959Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:51:15.577308545Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:51:15.598434892Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:51:15.598478928Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:51:15.598494088Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:51:20.613382276Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:51:20.641603029Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:51:20.641723815Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:51:20.665779908Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:51:20.665822864Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:51:20.665836745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:51:20.665848381Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:51:20.665858127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:51:25.684295623Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:51:25.713738464Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:51:25.713853552Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:51:25.742408158Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:51:25.742453811Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:51:25.742468447Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:51:25.742479862Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:51:25.742489386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:51:30.760143015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:51:30.790568628Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:51:30.790691259Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:51:30.810532131Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:51:30.810667679Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:51:30.810685252Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:51:30.810695843Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:51:30.810713719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:51:35.829697771Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:51:35.858675674Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:51:35.858791943Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:51:35.885507878Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:51:35.88555242Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:51:35.88558975Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:51:35.885600821Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:51:35.885608886Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:51:40.90427797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:51:40.933715252Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:51:40.933811444Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:51:40.958033708Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:51:40.958085968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:51:40.958101896Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:51:40.958112039Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:51:40.958120803Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:51:45.974209108Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:51:46.004344132Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:51:46.004650469Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:51:46.02859007Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:51:46.028643207Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:51:46.028659103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:51:46.028670135Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:51:46.028678876Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:51:51.0512841Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:51:51.081516889Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:51:51.081611083Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:51:51.104842834Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:51:51.104886399Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:51:51.104902718Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:51:51.104912814Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:51:51.104921735Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:51:56.122763571Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:51:56.152897333Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:51:56.153010664Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:51:56.176284173Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:51:56.176332658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:51:56.176347701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:51:56.176358429Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:51:56.176367865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:52:01.203885109Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:52:01.239518361Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:52:01.239640568Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:52:01.264721267Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:52:01.264766307Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:52:01.264780764Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:52:01.264791908Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:52:01.264801354Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:52:06.284284441Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:52:06.313586639Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:52:06.313688033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:52:06.333552704Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:52:06.333597093Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:52:06.333613037Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:52:06.333622293Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:52:06.333631502Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:52:11.350225615Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:52:11.380984696Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:52:11.381091316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:52:11.405786686Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:52:11.405830598Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:52:11.405855894Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:52:11.405866111Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:52:11.405874759Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:52:16.423211842Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:52:16.453883658Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:52:16.453975792Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:52:16.475009953Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:52:16.475056123Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:52:16.475070495Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:52:16.475082368Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:52:16.475091467Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:52:21.494569274Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:52:21.524749344Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:52:21.524882672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:52:21.549443519Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:52:21.549501682Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:52:21.549517032Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:52:21.549526453Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:52:21.549534657Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:52:26.569298036Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:52:26.597381104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:52:26.597547532Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:52:26.622992131Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:52:26.623063762Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:52:26.623092349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:52:26.623102611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:52:26.623183642Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:52:31.641277157Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:52:31.670773432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:52:31.670883428Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:52:31.6932956Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:52:31.693335278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:52:31.693348262Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:52:31.693359626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:52:31.69336872Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:52:36.709181093Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:52:36.739549326Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:52:36.739635349Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:52:36.760954651Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:52:36.761023835Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:52:36.761062535Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:52:36.761073029Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:52:36.761082376Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:52:41.7856785Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:52:41.816327133Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:52:41.816493167Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:52:41.837990113Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:52:41.838031529Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:52:41.838046317Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:52:41.838057351Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:52:41.838066592Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:52:46.854474363Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:52:46.886170501Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:52:46.886296141Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:52:46.906119861Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:52:46.906157936Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:52:46.906170985Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:52:46.906182925Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:52:46.906191877Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:52:51.925034867Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:52:51.954472085Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:52:51.954568562Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:52:51.977700268Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:52:51.977741996Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:52:51.977780113Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:52:51.977790707Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:52:51.977799586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:52:56.992323058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:52:57.025541505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:52:57.025675148Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:52:57.048488509Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:52:57.048536958Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:52:57.048553788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:52:57.048564139Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:52:57.048572069Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:53:02.067541777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:53:02.100034038Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:53:02.100145019Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:53:02.121678647Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:53:02.121720775Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:53:02.121735884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:53:02.121747113Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:53:02.121757105Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:53:07.138524847Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:53:07.169856073Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:53:07.169960674Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:53:07.194906666Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:53:07.194953121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:53:07.19496695Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:53:07.1949757Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:53:07.194982924Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:53:12.217194487Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:53:12.246216208Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:53:12.246327057Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:53:12.270504396Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:53:12.27054901Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:53:12.270562844Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:53:12.270573811Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:53:12.270584099Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:53:17.28927955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:53:17.317578198Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:53:17.317689446Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:53:17.343648169Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:53:17.343690096Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:53:17.343703699Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:53:17.343714744Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:53:22.367318813Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:53:22.393336715Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:53:22.393450916Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:53:22.418062476Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:53:22.418105263Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:53:22.418121142Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:53:22.418132987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:53:22.418142693Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:53:27.437789109Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:53:27.466948447Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:53:27.467056371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:53:27.489872663Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:53:27.489924908Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:53:27.489941076Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:53:27.4899512Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:53:27.489960114Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:53:32.505025085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:53:32.534210612Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:53:32.534346882Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:53:32.55836543Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:53:32.55840942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:53:32.558424928Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:53:32.558436993Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:53:32.558446877Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:53:37.575927622Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:53:37.605579031Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:53:37.606058098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:53:37.631799954Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:53:37.63184522Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:53:37.631859152Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:53:37.631869817Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:53:37.631878618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:53:42.653017276Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:53:42.685211768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:53:42.685316339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:53:42.710172653Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:53:42.710218914Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:53:42.710232349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:53:42.710263697Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:53:42.710272008Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:53:47.72923062Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:53:47.758322969Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:53:47.758430434Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:53:47.781290283Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:53:47.781332656Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:53:47.781346907Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:53:47.781357558Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:53:47.781367769Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:53:52.802280273Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:53:52.829780308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:53:52.829892236Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:53:52.854812446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:53:52.854852853Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:53:52.854866082Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:53:52.854877207Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:53:52.854886766Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:53:57.872028729Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:53:57.900862964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:53:57.900967293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:53:57.923728509Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:53:57.923772798Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:53:57.92378781Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:53:57.923797524Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:53:57.923806493Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:54:02.94195947Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:54:02.971485444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:54:02.971598078Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:54:02.995293381Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:54:02.99533611Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:54:02.995349981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:54:02.995362639Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:54:02.995371908Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:54:08.008973718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:54:08.040035349Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:54:08.040146073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:54:08.063526751Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:54:08.063568704Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:54:08.063603288Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:54:08.063613149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:54:08.063622479Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:54:13.089257959Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:54:13.118843175Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:54:13.118949181Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:54:13.143584762Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:54:18.157012784Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:54:18.186320242Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:54:18.186416825Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:54:18.206170066Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:54:18.206212732Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:54:18.206226262Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:54:18.206249809Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:54:18.206258605Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:54:23.220537894Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:54:23.251667221Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:54:23.251759543Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:54:23.27472125Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:54:23.274773744Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:54:23.27478829Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:54:23.274832375Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:54:23.274842242Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:54:28.293263825Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:54:28.321852167Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:54:28.321954717Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:54:28.342137718Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:54:28.342178573Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:54:28.342192615Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:54:28.342203574Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:54:28.342213896Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:54:33.35474036Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:54:33.385140976Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:54:33.385263228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:54:33.408620245Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:54:33.408663204Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:54:33.408677346Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:54:33.4086891Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:54:33.408700126Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:54:38.425401129Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:54:38.454671119Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:54:38.454782636Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:54:38.478970017Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:54:38.479018565Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:54:38.479032777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:54:38.479043267Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:54:38.479052828Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:54:43.493096973Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:54:43.525815617Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:54:43.525908285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:54:43.545165295Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:54:43.545229032Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:54:43.545256492Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:54:43.545267159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:54:43.545275603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:54:48.566302742Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:54:48.593620127Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:54:48.593714854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:54:48.617882252Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:54:48.617923507Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:54:48.617936842Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:54:48.61794752Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:54:48.617956013Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:54:53.633848721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:54:53.66315734Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:54:53.663283638Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:54:53.682702067Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:54:53.682764166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:54:53.682780146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:54:53.682790149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:54:53.68279848Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:54:58.697189339Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:54:58.725208459Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:54:58.72532996Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:54:58.747316153Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:54:58.747358835Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:54:58.747373775Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:54:58.747383193Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:54:58.747391473Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:55:03.765299793Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:55:03.793798068Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:55:03.793915949Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:55:03.814573157Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:55:03.814629115Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:55:03.814645643Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:55:03.814735307Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:55:03.814785807Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:55:08.830485659Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:55:08.859366117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:55:08.859467825Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:55:08.882333788Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:55:08.882395745Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:55:08.882410293Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:55:08.882421343Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:55:08.88243082Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:55:13.897716797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:55:13.92931807Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:55:13.929403544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:55:13.951176253Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:55:13.951216536Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:55:13.951230143Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:55:13.951252011Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:55:13.951262304Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:55:18.969455629Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:55:18.999484804Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:55:18.999609597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:55:19.019499775Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:55:19.019721893Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:55:19.019741147Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:55:19.019763406Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:55:19.019773464Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:55:24.037760489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:55:24.068566241Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:55:24.068691757Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:55:24.089068945Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:55:24.089114855Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:55:24.089129867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:55:24.089139993Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:55:24.089150109Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:55:29.104315511Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:55:29.134770167Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:55:29.134914653Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:55:29.160199045Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:55:29.160274367Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:55:29.160289371Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:55:29.160298858Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:55:29.160307216Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:55:34.176687939Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:55:34.207960187Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:55:34.208074668Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:55:34.231864559Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:55:34.23192374Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:55:34.231957903Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:55:34.232008579Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:55:34.232018718Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:55:39.25131244Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:55:39.278835728Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:55:39.278919688Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:55:39.302386048Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:55:39.302428789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:55:39.302442282Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:55:39.302454234Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:55:39.302464056Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:55:44.320271157Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:55:44.348596946Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:55:44.348698058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:55:44.372886615Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:55:44.372930837Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:55:44.372946737Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:55:44.372957382Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:55:44.372968084Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:55:49.388257114Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:55:49.417905184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:55:49.418020301Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:55:49.438051053Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:55:49.438106027Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:55:49.438121599Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:55:49.43813104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:55:49.438139854Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:55:54.454029965Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:55:54.485779908Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:55:54.485875851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:55:54.508999544Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:55:54.509044761Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:55:54.509061015Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:55:54.509073234Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:55:54.509083936Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:55:59.52585382Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:55:59.55577349Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:55:59.555888282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:55:59.58153Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:55:59.581572902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:55:59.581586762Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:55:59.581606647Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:55:59.581615182Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:56:04.596204228Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:56:04.624116696Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:56:04.62425144Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:56:04.64891252Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:56:04.648958364Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:56:04.648973759Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:56:09.665854606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:56:09.69636337Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:56:09.696623304Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:56:09.72061862Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:56:09.720688126Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:56:09.720702505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:56:09.72071195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:56:09.720721615Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:56:14.738172694Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:56:14.764020147Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:56:14.764131036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:56:14.786193714Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:56:14.786249286Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:56:14.786264491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:56:14.786299015Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:56:14.786307616Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:56:19.803368017Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:56:19.83281073Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:56:19.832925448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:56:19.856185423Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:56:19.856226805Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:56:19.856253793Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:56:19.856264351Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:56:19.856283338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:56:24.874287114Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:56:24.903085Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:56:24.903180569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:56:24.925830321Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:56:24.925875656Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:56:24.925889757Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:56:24.925900677Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:56:24.925910231Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:56:29.946476755Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:56:29.97714785Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:56:29.977283459Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:56:30.00037632Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:56:30.000480287Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:56:30.000495641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:56:30.000522258Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:56:30.000531162Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:56:35.020469656Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:56:35.048904439Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:56:35.048997356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:56:35.071872079Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:56:35.071919957Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:56:35.071934335Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:56:35.071945852Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:56:35.071955227Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:56:40.089304609Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:56:40.122032997Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:56:40.122132028Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:56:40.149289706Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:56:40.149344994Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:56:40.149360942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:56:40.149371726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:56:40.149381028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:56:45.166159168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:56:45.198455869Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:56:45.198557528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:56:45.220261391Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:56:45.220303915Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:56:45.22031794Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:56:45.220328681Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:56:45.220338383Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:56:50.236140775Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:56:50.265944625Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:56:50.266057631Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:56:50.291858958Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:56:50.291898913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:56:50.291915284Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:56:50.291927203Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:56:50.29193618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:56:55.30353442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:56:55.332317845Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:56:55.332522445Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:56:55.353978973Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:56:55.354021821Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:56:55.354060231Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:56:55.354070149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:56:55.354079181Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:57:00.37221296Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:57:00.403406704Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:57:00.403522293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:57:00.429987853Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:57:00.430028456Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:57:00.430043144Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:57:00.430053686Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:57:00.430062172Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:57:05.448226698Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:57:05.477584518Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:57:05.477684587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:57:05.498418047Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:57:05.498481436Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:57:05.498497758Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:57:05.498587408Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:57:05.498598614Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:57:10.521100467Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:57:10.547567748Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:57:10.547677343Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:57:10.571480291Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:57:10.571524358Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:57:10.571538437Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:57:10.571548411Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:57:10.5715565Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:57:15.589282395Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:57:15.617346849Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:57:15.617438592Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:57:15.63740148Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:57:15.637445705Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:57:15.637459199Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:57:15.637469083Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:57:15.637479063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:57:20.655154237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:57:20.684175508Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:57:20.684373598Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:57:20.704604462Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:57:20.7046496Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:57:20.704663775Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:57:20.704673726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:57:20.704682266Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:57:25.722125036Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:57:25.749947247Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:57:25.750041858Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:57:25.770563768Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:57:25.770606968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:57:25.770620876Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:57:25.770631919Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:57:25.770641583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:57:30.789270193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:57:30.816331482Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:57:30.816425623Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:57:30.836657789Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:57:30.836704158Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:57:30.836719949Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:57:30.836730483Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:57:35.855310188Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:57:35.884587648Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:57:35.884696247Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:57:35.903718807Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:57:35.903772735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:57:35.903786927Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:57:35.903796974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:57:35.90380541Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:57:40.924133225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:57:40.953832914Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:57:40.953951592Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:57:40.973987786Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:57:40.974032637Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:57:40.974050203Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:57:40.974060823Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:57:40.974070265Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:57:45.988318993Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:57:46.019494024Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:57:46.019581915Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:57:46.040158488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:57:46.040214Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:57:51.059377678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:57:51.090733549Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:57:51.090879017Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:57:51.111836955Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:57:51.11187888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:57:51.111892617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:57:51.111916946Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:57:51.11192619Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:57:56.1282802Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:57:56.156652926Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:57:56.156765383Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:57:56.181035148Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:57:56.181074905Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:57:56.181088462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:57:56.18109921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:57:56.181108262Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:58:01.197994435Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:58:01.227593835Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:58:01.227704004Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:58:01.253854281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:58:01.253918312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:58:01.253933811Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:58:01.253943341Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:58:01.253951914Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:58:06.273481921Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:58:06.304112677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:58:06.30424807Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:58:06.329604361Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:58:06.329657356Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:58:06.329671516Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:58:06.329681664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:58:06.32969139Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:58:11.34629634Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:58:11.374625082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:58:11.374716698Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:58:11.39905055Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:58:11.39909288Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:58:11.399106962Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:58:11.399118265Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:58:11.399127656Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:58:16.417273208Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:58:16.446935243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:58:16.447042859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:58:16.470835999Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:58:16.470893034Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:58:16.470908105Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:58:16.470990834Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:58:16.471116253Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T01:58:16.471455331Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T01:58:16.471543993Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:58:21.489250219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:58:21.519658803Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:58:21.51977368Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:58:21.545361155Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:58:21.545413868Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:58:21.545443132Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:58:21.545516088Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:58:21.545527362Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:58:26.562278232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:58:26.589878989Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:58:26.589987587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:58:26.612589405Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:58:26.612630418Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:58:26.61264369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:58:26.612655751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:58:26.612674795Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:58:31.631460792Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:58:31.661519619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:58:31.661629305Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:58:31.686002081Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:58:31.686056129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:58:36.70304956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:58:36.729732671Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:58:36.729843046Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:58:36.752203769Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:58:36.752254266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:58:36.752268316Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:58:36.752279407Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:58:36.752287656Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:58:41.771446772Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:58:41.801552764Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:58:41.801651135Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:58:41.826456198Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:58:41.826500644Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:58:41.826514214Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:58:41.826525148Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:58:41.826534772Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:58:46.843226104Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:58:46.873439692Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:58:46.873547812Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:58:46.896290435Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:58:46.896334108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:58:46.896349555Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:58:46.896362426Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:58:46.896371635Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:58:51.911655253Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:58:51.941369162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:58:51.941488322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:58:51.963764573Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:58:51.963805143Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:58:51.963818307Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:58:51.963830105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:58:51.963839303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:58:56.985025766Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:58:57.013011051Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:58:57.013099165Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:58:57.036828725Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:58:57.036870715Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:58:57.036884896Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:58:57.036903618Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:58:57.036912994Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:59:02.052464034Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:59:02.088045481Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:59:02.088339843Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:59:02.112212664Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:59:02.112275677Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:59:02.11228998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:59:02.11229972Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:59:02.112308249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:59:07.130650451Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:59:07.161599562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:59:07.161725786Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:59:07.182997961Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:59:07.183039566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:59:07.183054125Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:59:07.183067475Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:59:07.183076382Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:59:12.202467571Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:59:12.235309916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:59:12.235416646Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:59:12.260013607Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:59:12.260070754Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:59:12.260087201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:59:12.260156219Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:59:12.260166416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:59:17.2812773Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:59:17.309576744Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:59:17.309702468Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:59:17.334552989Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:59:17.334595416Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:59:17.33460927Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:59:17.33462026Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:59:17.33462995Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:59:22.353448719Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:59:22.383760118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:59:22.383849492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:59:22.408017651Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:59:22.408060911Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:59:22.40807554Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:59:22.408086869Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:59:22.408096322Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:59:27.426839498Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:59:27.455302995Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:59:27.455417442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:59:27.476207757Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:59:27.476263036Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:59:27.476278708Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:59:27.476289131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:59:27.476297776Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:59:32.491710251Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:59:32.521308376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:59:32.521414488Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:59:32.541646009Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:59:32.541691896Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:59:32.541706544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:59:32.541717897Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:59:32.541725459Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:59:37.558378578Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:59:37.58671082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:59:37.586834932Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:59:37.606596512Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:59:37.606637283Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:59:37.606651118Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:59:37.606689921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:59:37.60669916Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:59:42.625547084Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:59:42.652271806Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:59:42.652831646Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:59:42.680080734Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:59:42.680123321Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:59:42.680137116Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:59:42.680147031Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:59:42.680155559Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:59:47.698277203Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:59:47.727255447Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:59:47.727362788Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:59:47.745997438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:59:47.746044953Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:59:47.74607019Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:59:47.746081621Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:59:47.746090785Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:59:52.764539314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:59:52.793622446Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:59:52.793728722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:59:52.81372612Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:59:52.814150282Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:59:52.814173431Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:59:52.814196047Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:59:52.814207969Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T01:59:57.831161963Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T01:59:57.858056044Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T01:59:57.858157402Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T01:59:57.883951152Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T01:59:57.884017337Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T01:59:57.884034759Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T01:59:57.88404483Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T01:59:57.884118358Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:00:02.919306742Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:00:03.000426311Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:00:03.0006182Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:00:03.036030408Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:00:03.036081394Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:00:03.036097672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:00:03.036108761Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:00:03.036117302Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:00:08.053449555Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:00:08.084647113Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:00:08.084766461Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:00:08.106414457Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:00:08.106463547Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:00:08.106478244Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:00:08.106489157Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:00:08.1065004Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:00:13.120615229Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:00:13.150174569Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:00:13.150310899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:00:13.173260574Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:00:13.173302492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:00:13.173316339Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:00:13.173327744Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:00:13.17333759Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:00:18.189491776Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:00:18.219207309Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:00:18.219342315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:00:18.239886553Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:00:18.239942927Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:00:18.239957799Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:00:18.239968016Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:00:18.239976443Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:00:23.254375624Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:00:23.285651276Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:00:23.285758991Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:00:23.308772459Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:00:23.308828622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:00:23.308843888Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:00:23.308854377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:00:23.308863192Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:00:28.322620366Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:00:28.351544707Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:00:28.351643743Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:00:28.377394258Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:00:28.377437768Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:00:28.377453194Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:00:28.37746395Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:00:28.377475136Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:00:33.393191303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:00:33.423633678Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:00:33.423723107Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:00:33.445637199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:00:33.445685031Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:00:33.445699414Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:00:33.445709324Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:00:33.445720029Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:00:38.462346004Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:00:38.493595442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:00:38.493700594Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:00:38.515150437Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:00:38.515192961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:00:38.515206659Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:00:38.515217092Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:00:38.515227631Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:00:43.529421449Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:00:43.559181469Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:00:43.559309629Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:00:43.580896833Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:00:43.580938805Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:00:43.580952066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:00:43.580963627Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:00:43.580972925Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:00:48.597214124Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:00:48.626045969Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:00:48.626175442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:00:48.652833108Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:00:48.652876889Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:00:48.652891206Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:00:48.652911272Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:00:48.652919961Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:00:53.669314884Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:00:53.69976954Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:00:53.699881628Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:00:53.724483308Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:00:53.724524418Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:00:53.724539744Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:00:53.724550457Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:00:53.724559499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:00:58.740547734Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:00:58.77061509Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:00:58.770724391Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:00:58.791596891Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:00:58.791655258Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:00:58.791679883Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:00:58.791690358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:00:58.791699086Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:01:03.80833231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:01:03.839384009Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:01:03.839482379Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:01:03.861111564Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:01:03.861154745Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:01:03.861168396Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:01:03.86117995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:01:03.861189124Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:01:08.882455855Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:01:08.912581588Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:01:08.9126723Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:01:08.934348418Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:01:08.934393893Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:01:08.934407542Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:01:08.934418934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:01:08.934428612Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:01:13.949010238Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:01:13.977070716Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:01:13.977177899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:01:13.997699978Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:01:13.997744662Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:01:13.997759648Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:01:13.997770801Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:01:13.997779555Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:01:19.017902185Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:01:19.047976192Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:01:19.048096386Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:01:19.070593131Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:01:19.070634231Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:01:19.070649254Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:01:19.070659729Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:01:19.070668563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:01:24.085846004Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:01:24.11552239Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:01:24.115644159Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:01:24.139819955Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:01:24.139876439Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:01:24.139893301Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:01:24.139904127Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:01:24.139912791Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:01:29.154304579Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:01:29.183941675Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:01:29.184042655Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:01:29.205511916Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:01:29.20556042Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:01:29.205575634Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:01:29.205585868Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:01:29.205594756Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:01:34.222551866Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:01:34.251751345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:01:34.251859254Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:01:34.275654257Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:01:34.275696094Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:01:34.275709579Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:01:34.275720577Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:01:34.275729763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:01:39.290611015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:01:39.322460568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:01:39.322566854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:01:39.343009944Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:01:39.343054983Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:01:39.343069323Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:01:39.343079926Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:01:39.343090188Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:01:44.358145152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:01:44.388918836Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:01:44.38902842Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:01:44.409542564Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:01:44.409583225Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:01:44.409597349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:01:44.409607972Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:01:44.409617414Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:01:49.427269693Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:01:49.45696703Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:01:49.457084824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:01:49.480959101Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:01:49.48101433Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:01:49.481028794Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:01:49.481038298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:01:49.481046663Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:01:54.496821105Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:01:54.526370828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:01:54.526459205Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:01:54.546555348Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:01:54.546607323Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:01:54.546623838Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:01:54.546634179Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:01:54.546642933Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:01:59.561651388Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:01:59.592643794Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:01:59.59273515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:01:59.617194889Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:01:59.61725032Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:01:59.617265336Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:01:59.617276475Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:01:59.617285148Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:02:04.634420997Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:02:04.663801793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:02:04.663912905Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:02:04.684489022Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:02:04.684549539Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:02:04.684564346Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:02:04.684576124Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:02:04.684703268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:02:09.702140396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:02:09.733413531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:02:09.733544728Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:02:09.754851332Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:02:09.754914895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:02:09.754931045Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:02:09.754943079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:02:09.755015756Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:02:14.771714071Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:02:14.80285125Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:02:14.802952163Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:02:14.823088796Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:02:14.823134775Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:02:14.823149102Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:02:14.823159535Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:02:14.823169455Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:02:19.840146015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:02:19.869588132Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:02:19.869699424Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:02:19.889515953Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:02:19.889575687Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:02:19.889591774Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:02:19.889601268Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:02:19.889609862Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:02:24.906217803Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:02:24.936835278Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:02:24.93695267Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:02:24.958681097Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:02:24.958725078Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:02:24.958738306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:02:24.958748687Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:02:24.958757387Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:02:29.979867417Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:02:30.008814119Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:02:30.008924598Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:02:30.030732836Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:02:30.030777899Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:02:30.030792882Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:02:30.030805927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:02:30.030815384Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:02:35.047445404Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:02:35.076556702Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:02:35.07664751Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:02:35.099938625Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:02:35.099985675Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:02:35.099999568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:02:35.100012056Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:02:35.100022241Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:02:40.118399454Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:02:40.149800408Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:02:40.149907037Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:02:40.172047778Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:02:40.172091927Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:02:40.172105692Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:02:40.172117944Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:02:40.172127787Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:02:45.188163405Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:02:45.218726696Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:02:45.218818458Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:02:45.240770947Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:02:45.240816454Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:02:45.240831199Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:02:45.240842632Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:02:45.240852286Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:02:50.259275116Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:02:50.286169474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:02:50.28630907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:02:50.310539637Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:02:50.310584085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:02:50.310598864Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:02:50.310609736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:02:50.310619996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:02:55.327922343Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:02:55.358827216Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:02:55.35896006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:02:55.380509745Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:02:55.380551825Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:02:55.380566782Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:02:55.38057679Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:02:55.380586512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:03:00.39620188Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:03:00.424303127Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:03:00.424493109Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:03:00.447063565Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:03:00.447107579Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:03:00.447122342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:03:00.447133021Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:03:00.447142452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:03:05.467605431Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:03:05.498347021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:03:05.498437667Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:03:05.518038373Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:03:05.518081251Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:03:05.518095547Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:03:05.518107954Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:03:05.518118009Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:03:10.535119541Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:03:10.565897666Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:03:10.566026914Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:03:10.588663771Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:03:10.588705644Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:03:10.588719039Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:03:10.588731184Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:03:10.588740811Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:03:15.605376993Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:03:15.638122079Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:03:15.63821467Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:03:15.665836534Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:03:15.665881545Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:03:15.665896786Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:03:15.665929951Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:03:15.66593936Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:03:20.686286847Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:03:20.716858324Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:03:20.716956833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:03:20.739967738Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:03:20.7400364Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:03:20.740052591Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:03:20.740126037Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:03:20.740137049Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:03:25.760547517Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:03:25.789922895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:03:25.790018197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:03:25.811514246Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:03:25.811570657Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:03:25.811586701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:03:25.811597021Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:03:25.811605981Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:03:30.83028787Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:03:30.858509576Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:03:30.858973362Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:03:30.880755279Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:03:30.88079903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:03:30.880814192Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:03:30.880823039Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:03:30.880830357Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:03:35.896672017Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:03:35.927394629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:03:35.927488106Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:03:35.950917438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:03:35.950960378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:03:35.950994939Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:03:35.95100553Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:03:35.951014074Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:03:40.97408817Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:03:41.004760601Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:03:41.004872555Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:03:41.031880794Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:03:41.031941466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:03:41.031956832Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:03:41.031966562Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:03:41.031974893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:03:46.048306864Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:03:46.079707551Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:03:46.079815783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:03:46.101801888Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:03:46.101840498Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:03:46.10187165Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:03:46.101882606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:03:46.101890962Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:03:51.12214316Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:03:51.150607954Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:03:51.150720935Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:03:51.171193118Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:03:51.171257098Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:03:51.171271723Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:03:51.17128244Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:03:51.171291002Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:03:56.189265761Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:03:56.218273229Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:03:56.218363934Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:03:56.238120885Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:03:56.238163463Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:03:56.238178897Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:03:56.238191812Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:03:56.238203012Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:04:01.2585552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:04:01.2877004Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:04:01.287796297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:04:01.310907619Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:04:01.310953204Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:04:01.310967674Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:04:01.310987586Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:04:01.310996719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:04:06.330561574Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:04:06.360567582Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:04:06.360657993Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:04:06.385797044Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:04:06.385840682Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:04:06.385854031Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:04:06.385864935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:04:06.385874217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:04:11.403444793Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:04:11.433136393Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:04:11.433248852Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:04:11.455392636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:04:11.455444718Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:04:11.455459739Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:04:11.455471582Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:04:11.4554798Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:04:16.4756746Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:04:16.507603893Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:04:16.507720625Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:04:16.533488107Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:04:16.53354472Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:04:16.533558671Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:04:16.533570126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:04:16.533579474Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:04:21.554230932Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:04:21.584576314Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:04:21.58468531Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:04:21.610745338Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:04:21.610792458Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:04:21.610808844Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:04:21.610819701Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:04:21.610829392Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:04:26.630887952Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:04:26.661708701Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:04:26.661828204Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:04:26.687741313Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:04:26.687793385Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:04:26.687806499Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:04:26.687816073Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:04:26.687825867Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:04:31.70729147Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:04:31.734035586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:04:31.734149849Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:04:31.754504788Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:04:31.754548371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:04:31.754563571Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:04:31.754621958Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:04:31.754632477Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:04:36.773093934Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:04:36.802785525Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:04:36.802879341Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:04:36.826487185Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:04:36.82653007Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:04:36.826544609Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:04:36.826556523Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:04:36.826565671Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:04:41.844279366Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:04:41.870616275Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:04:41.870707025Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:04:41.894764447Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:04:41.894826455Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:04:41.89484137Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:04:41.894851934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:04:41.894860296Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:04:46.911005241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:04:46.940146819Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:04:46.940262889Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:04:46.965051531Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:04:46.965091645Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:04:46.965105693Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:04:46.965117229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:04:46.965127123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:04:51.983285072Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:04:52.01471036Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:04:52.014808186Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:04:52.039825317Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:04:52.039868029Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:04:52.039882361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:04:52.039919471Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:04:52.039929076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:04:57.058565269Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:04:57.089330476Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:04:57.089448444Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:04:57.111204631Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:04:57.111260026Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:04:57.111275662Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:04:57.111286605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:04:57.111296375Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:05:02.13177925Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:05:02.175747752Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:05:02.175846168Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:05:02.201585685Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:05:02.201649641Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:05:02.201664574Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:05:02.201674227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:05:02.201682327Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:05:07.218261613Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:05:07.249483359Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:05:07.249616651Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:05:07.273649208Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:05:07.273705058Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:05:07.273721117Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:05:07.273731643Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:05:07.273740873Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:05:12.292959756Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:05:12.322510036Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:05:12.322621063Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:05:12.344701538Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:05:12.344760016Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:05:12.344775562Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:05:17.366024617Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:05:17.396064366Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:05:17.396157143Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:05:17.418936328Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:05:17.418989186Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:05:17.419004371Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:05:17.419015854Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:05:17.419024091Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:05:22.438817367Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:05:22.469375204Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:05:22.469483409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:05:22.492976385Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:05:22.493034587Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:05:22.49305033Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:05:22.493059847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:05:22.493068932Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:05:27.509288093Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:05:27.538941849Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:05:27.539057454Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:05:27.563889428Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:05:27.563937525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:05:32.581710086Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:05:32.612915933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:05:32.613027123Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:05:32.637040243Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:05:32.637082958Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:05:32.637096902Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:05:32.637109263Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:05:32.637120138Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:05:37.652370024Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:05:37.682646102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:05:37.682736756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:05:37.707044673Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:05:37.707087504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:05:37.7071027Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:05:37.707113538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:05:37.707122585Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:05:42.727295274Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:05:42.75591758Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:05:42.756012878Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:05:42.77669458Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:05:42.776736204Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:05:42.776751095Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:05:42.776762991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:05:42.776772496Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:05:47.796585779Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:05:47.8253437Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:05:47.825450438Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:05:47.850677499Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:05:47.850740198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:05:47.850756022Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:05:47.85076596Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:05:47.850774834Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:05:52.873201858Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:05:52.899668945Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:05:52.899759185Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:05:52.920845856Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:05:52.920889605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:05:52.920902893Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:05:52.920914454Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:05:52.920923897Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:05:57.939403777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:05:57.968565587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:05:57.968658997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:05:57.990392626Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:05:57.990448334Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:05:57.99046475Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:05:57.990474715Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:05:57.990483238Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:06:03.015471846Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:06:03.046952361Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:06:03.047097329Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:06:03.070651545Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:06:03.070696888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:06:03.07071141Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:06:03.070721905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:06:03.070731369Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:06:08.090290894Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:06:08.118465467Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:06:08.118551456Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:06:08.14127042Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:06:08.141313741Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:06:08.141328605Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:06:08.141359262Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:06:08.14136878Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:06:13.157287361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:06:13.188660583Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:06:13.188793248Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:06:13.212125703Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:06:13.212172268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:06:13.212187228Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:06:13.21219945Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:06:13.212208859Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:06:18.229300303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:06:18.26145058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:06:18.261575385Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:06:18.283917229Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:06:18.283966305Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:06:18.284017598Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:06:18.284028104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:06:18.284036459Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:06:23.300177361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:06:23.330611825Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:06:23.330710569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:06:23.352768942Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:06:23.352813486Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:06:23.352828362Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:06:23.352840417Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:06:23.352850204Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:06:28.368642042Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:06:28.399161763Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:06:28.399294553Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:06:28.422136749Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:06:28.422178149Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:06:28.422205853Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:06:28.422274512Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:06:28.422284791Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:06:33.436700786Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:06:33.464949744Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:06:33.465075913Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:06:33.488131964Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:06:33.488189584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:06:33.488204633Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:06:33.48821553Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:06:33.488224268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:06:38.508519146Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:06:38.538577046Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:06:38.538669372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:06:38.55945492Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:06:38.559525931Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:06:38.559541067Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:06:38.559552223Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:06:38.559560887Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:06:43.575292737Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:06:43.604190846Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:06:43.604342202Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:06:43.630684904Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:06:43.630745461Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:06:43.630761167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:06:43.630804294Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:06:43.630813567Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:06:48.651468879Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:06:48.678009286Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:06:48.678117484Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:06:48.701554732Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:06:48.701594667Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:06:48.70160903Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:06:48.701620115Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:06:48.701628726Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:06:53.719292758Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:06:53.749057189Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:06:53.749148901Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:06:53.773032541Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:06:53.773074948Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:06:53.773089798Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:06:53.773102026Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:06:53.77311148Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:06:58.788100595Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:06:58.818497444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:06:58.818590999Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:06:58.845163413Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:06:58.845211314Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:06:58.845225198Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:06:58.845249109Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:06:58.845259454Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:07:03.861750632Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:07:03.890593692Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:07:03.890684582Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:07:03.914874777Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:07:03.914916553Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:07:03.91493026Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:07:03.914942074Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:07:03.914951194Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:07:08.931079033Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:07:08.960373134Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:07:08.960533366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:07:08.987162898Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:07:08.98720552Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:07:08.987219253Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:07:08.9872287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:07:08.987257882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:07:14.002699278Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:07:14.03529145Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:07:14.03548064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:07:14.058583216Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:07:14.058629848Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:07:14.05864403Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:07:14.058655645Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:07:14.058666367Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:07:19.075219086Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:07:19.104477175Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:07:19.104595969Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:07:19.124767815Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:07:19.124808827Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:07:19.124821941Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:07:19.124833198Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:07:19.124843257Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:07:24.141285326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:07:24.170321762Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:07:24.170445251Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:07:24.194279952Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:07:24.194333867Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:07:24.194348988Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:07:24.194359486Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:07:24.194366841Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:07:29.208882954Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:07:29.234810117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:07:29.234930243Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:07:29.260632231Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:07:29.260687678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:07:29.260703904Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:07:29.260763312Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:07:29.260773477Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:07:34.274625209Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:07:34.305968778Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:07:34.306086251Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:07:34.329427414Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:07:34.329481611Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:07:34.329498488Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:07:34.329510676Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:07:34.329520005Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:07:39.3434724Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:07:39.374180288Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:07:39.374383207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:07:39.396914471Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:07:39.396956329Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:07:39.396968894Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:07:39.396978457Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:07:39.396987396Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:07:44.413142422Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:07:44.441366296Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:07:44.441462036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:07:44.464890878Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:07:44.464934806Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:07:44.464948788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:07:44.464960232Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:07:44.464969905Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:07:49.483849767Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:07:49.514186918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:07:49.514296909Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:07:49.537072531Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:07:49.537111189Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:07:49.537125865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:07:49.537136857Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:07:49.537146477Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:07:54.554518354Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:07:54.585885598Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:07:54.585994457Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:07:54.608819981Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:07:54.608872263Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:07:54.608888014Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:07:54.60889971Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:07:54.608909198Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:07:59.625446361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:07:59.65698549Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:07:59.657111253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:07:59.683609251Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:08:04.70155187Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:08:04.733854849Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:08:04.733946819Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:08:04.75377654Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:08:04.753833112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:08:04.753849017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:08:04.753859201Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:08:04.753867944Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:08:09.771141303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:08:09.801610266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:08:09.801692881Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:08:09.829834888Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:08:09.829880226Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:08:09.829895495Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:08:09.82992663Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:08:09.829936697Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:08:14.847174459Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:08:14.876553852Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:08:14.876655783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:08:14.8970413Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:08:14.897100696Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:08:14.897116242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:08:14.897126241Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:08:14.897134713Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:08:19.915291395Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:08:19.943966629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:08:19.944058901Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:08:19.970801306Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:08:19.970844581Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:08:19.970883586Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:08:19.970894016Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:08:19.970903907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:08:24.989153926Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:08:25.016602702Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:08:25.016727863Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:08:25.041114481Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:08:25.041159837Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:08:25.041174502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:08:25.041186701Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:08:25.041196064Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:08:30.057849965Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:08:30.089253152Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:08:30.089376838Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:08:30.115558221Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:08:30.115601998Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:08:30.115616164Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:08:30.115627384Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:08:30.115636824Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:08:35.128991375Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:08:35.160325519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:08:35.16058493Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:08:35.182668666Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:08:35.182713361Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:08:35.182752342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:08:35.182762772Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:08:35.182771461Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:08:40.203594362Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:08:40.235078082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:08:40.235170638Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:08:40.259552677Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:08:40.259617365Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:08:40.259632409Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:08:40.259642227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:08:40.259650382Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:08:45.277891052Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:08:45.307950238Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:08:45.308072272Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:08:45.329353938Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:08:45.329410272Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:08:45.329425467Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:08:45.329446247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:08:45.329455507Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:08:50.34479567Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:08:50.375263597Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:08:50.375381913Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:08:50.398636653Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:08:50.398684942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:08:50.398698194Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:08:50.398708361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:08:50.398716865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:08:55.41547158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:08:55.444788217Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:08:55.444878808Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:08:55.468635265Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:08:55.468679959Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:08:55.468694157Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:08:55.468703813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:08:55.468713886Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:09:00.481406325Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:09:00.512741831Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:09:00.512868508Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:09:00.539558841Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:09:00.539600924Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:09:00.539614162Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:09:00.539625142Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:09:00.539634389Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:09:05.557665273Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:09:05.585994115Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:09:05.586086664Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:09:05.606922488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:09:05.606966674Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:09:05.606980163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:09:05.606992197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:09:05.607001587Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:09:10.622308655Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:09:10.650830239Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:09:10.650956243Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:09:10.673991154Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:09:10.674031011Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:09:10.674047556Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:09:10.674058876Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:09:10.674069346Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:09:15.692163231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:09:15.72471198Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:09:15.724817765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:09:15.746304092Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:09:15.746346239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:09:15.746360263Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:09:15.746370728Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:09:15.746379984Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:09:20.761141749Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:09:20.791146714Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:09:20.791286184Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:09:20.815328459Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:09:20.815370103Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:09:20.815411363Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:09:20.815422517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:09:20.815430799Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:09:25.830318343Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:09:25.858588316Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:09:25.858724084Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:09:25.880720057Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:09:25.880764127Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:09:25.880777271Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:09:25.880788254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:09:25.880798365Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:09:30.898156668Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:09:30.927762864Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:09:30.927875224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:09:30.951485168Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:09:30.951528089Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:09:30.951543514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:09:30.951553511Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:09:30.951561896Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:09:35.967220019Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:09:35.99671446Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:09:35.996830372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:09:36.021907223Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:09:36.02194942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:09:36.021964966Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:09:36.021976617Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:09:36.0219872Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:09:41.039066557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:09:41.0698545Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:09:41.069955076Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:09:41.093263273Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:09:41.093341366Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:09:41.093378651Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:09:41.093390019Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:09:41.093400117Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:09:46.1133238Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:09:46.142945369Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:09:46.143037085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:09:46.16567133Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:09:46.165717437Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:09:46.165748876Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:09:46.165777431Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:09:46.165787168Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:09:51.189266147Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:09:51.219509142Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:09:51.219622014Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:09:51.243674757Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:09:51.243718171Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:09:51.243734599Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:09:56.263282404Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:09:56.291688415Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:09:56.291808048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:09:56.314642762Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:09:56.314688605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:09:56.314703061Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:09:56.314714022Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:09:56.314724522Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:10:01.332290231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:10:01.362574901Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:10:01.362976148Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:10:01.391500082Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:10:01.391544548Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:10:01.391559354Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:10:01.39156928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:10:01.391579763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:10:06.42116303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:10:06.451592563Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:10:06.45170974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:10:06.473531029Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:10:06.473573556Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:10:06.473586975Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:10:06.473597097Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:10:06.473606413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:10:11.493542088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:10:11.518825519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:10:11.518965501Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:10:11.542808418Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:10:11.542848233Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:10:11.542861812Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:10:11.542896292Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:10:11.542904992Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:10:16.562269531Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:10:16.592811704Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:10:16.592917562Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:10:16.616977929Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:10:16.617034861Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:10:16.6170614Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:10:16.617080615Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:10:16.617089794Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:10:21.638269727Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:10:21.667064738Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:10:21.667175767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:10:21.692211847Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:10:21.692269417Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:10:21.692283941Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:10:21.692313291Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:10:21.692322732Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:10:26.712359043Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:10:26.741263088Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:10:26.741377436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:10:26.761183821Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:10:26.761228828Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:10:26.761254466Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:10:26.761265674Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:10:26.761275287Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:10:31.779017243Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:10:31.806816619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:10:31.806908185Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:10:31.830950557Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:10:31.830993952Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:10:31.831006589Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:10:31.831016427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:10:31.831026085Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:10:36.851509Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:10:36.879716759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:10:36.879827331Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:10:36.90106839Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:10:36.901109378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:10:36.901123154Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:10:36.901134026Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:10:36.901143795Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:10:41.921865429Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:10:41.952073267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:10:41.952164139Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:10:41.980157181Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:10:41.980200127Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:10:41.980214952Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:10:41.980227227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:10:41.980255877Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:10:46.994438431Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:10:47.022298978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:10:47.02241821Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:10:47.044482918Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:10:47.044530987Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:10:47.044544879Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:10:47.044555626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:10:52.064302231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:10:52.093385942Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:10:52.093499894Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:10:52.113598864Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:10:52.113647301Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:10:52.11366141Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:10:52.113671419Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:10:52.11368047Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:10:57.134290265Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:10:57.163326888Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:10:57.163429376Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:10:57.187322274Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:10:57.187361371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:10:57.187375232Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:10:57.187387606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:10:57.187396718Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:11:02.206319373Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:11:02.2618851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:11:02.261995768Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:11:02.288263931Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:11:02.288306334Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:11:02.288321619Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:11:02.288333411Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:11:02.288343406Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:11:07.303276445Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:11:07.329814198Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:11:07.329925924Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:11:07.352186519Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:11:07.352230744Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:11:07.352257736Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:11:07.352267955Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:11:07.352276381Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:11:12.37090493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:11:12.400509831Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:11:12.400634223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:11:12.4259196Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:11:12.425963156Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:11:12.425977325Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:11:12.425988295Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:11:12.425997947Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:11:17.447285867Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:11:17.476743508Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:11:17.476836787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:11:17.4994538Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:11:17.499514695Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:11:17.49953273Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:11:17.49954377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:11:17.499553026Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:11:22.520073636Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:11:22.549043781Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:11:22.549168931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:11:22.574452416Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:11:22.574493737Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:11:22.574507682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:11:22.574518818Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:11:22.574527927Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:11:27.588813503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:11:27.617473118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:11:27.61758712Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:11:27.64067458Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:11:27.64072069Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:11:27.640736056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:11:27.640747519Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:11:27.640756565Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:11:32.655550176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:11:32.684097967Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:11:32.684206476Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:11:32.707250195Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:11:32.707291573Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:11:32.707306571Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:11:32.707316768Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:11:32.70732629Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:11:37.725297237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:11:37.752535106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:11:37.752654098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:11:37.77397341Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:11:37.774015607Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:11:37.774030619Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:11:37.774042787Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:11:37.774053077Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:11:42.787924886Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:11:42.817173645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:11:42.817297437Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:11:42.843792502Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:11:42.843837903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:11:42.843852889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:11:42.843863341Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:11:42.843873408Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:11:47.863420866Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:11:47.893625731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:11:47.89373351Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:11:47.91713575Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:11:47.917183105Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:11:47.917197628Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:11:47.917208786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:11:47.917217034Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:11:52.937474296Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:11:52.966113269Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:11:52.966204468Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:11:52.990122421Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:11:52.990167357Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:11:52.990182329Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:11:52.990217843Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:11:52.990227276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:11:58.009614776Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:11:58.040916885Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:11:58.0410096Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:11:58.064639266Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:11:58.064693963Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:11:58.064709474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:11:58.06471994Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:11:58.064728489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:12:03.08797339Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:12:03.119058016Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:12:03.119167736Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:12:03.143834133Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:12:03.143882261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:12:03.143896573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:12:03.143907539Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:12:03.143917889Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:12:08.15944361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:12:08.188611766Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:12:08.188715969Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:12:08.215259824Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:12:08.215302149Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:12:08.215315683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:12:08.215326609Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:12:08.215335967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:12:13.232284506Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:12:13.262443987Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:12:13.262535054Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:12:13.283268429Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:12:13.283324092Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:12:13.283339431Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:12:13.283350402Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:12:13.283359762Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:12:18.298353795Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:12:18.32955371Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:12:18.329648673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:12:18.352355462Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:12:18.35248256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:12:18.352501155Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:12:18.352513796Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:12:18.352524717Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:12:23.366627731Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:12:23.396675117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:12:23.396788493Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:12:23.415969354Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:12:23.416017646Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:12:23.416032991Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:12:23.416042639Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:12:23.416051536Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:12:28.430774099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:12:28.458754293Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:12:28.458861046Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:12:28.483165054Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:12:28.483207641Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:12:28.483222258Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:12:28.483245155Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:12:28.483254634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:12:33.498317796Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:12:33.528199841Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:12:33.52830711Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:12:33.551963083Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:12:33.552022656Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:12:33.552037886Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:12:33.552048186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:12:33.552058238Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:12:38.566280745Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:12:38.596308167Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:12:38.596476052Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:12:38.616973803Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:12:38.617017608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:12:38.617031639Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:12:38.61704136Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:12:38.617051966Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:12:43.632086454Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:12:43.659373878Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:12:43.659829185Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:12:43.682713929Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:12:43.682773266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:12:43.682787775Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:12:43.682798044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:12:43.68280778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:12:48.700867335Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:12:48.732261735Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:12:48.732368002Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:12:48.756323377Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:12:48.756363125Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:12:48.756376202Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:12:48.756443828Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:12:48.756454579Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:12:53.772071754Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:12:53.802531176Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:12:53.802650436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:12:53.828080153Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:12:53.828123639Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:12:53.828138543Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:12:53.828148856Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:12:53.828158309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:12:58.845142109Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:12:58.874229571Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:12:58.874344757Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:12:58.896878153Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:12:58.896936203Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:12:58.896950954Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:12:58.896960098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:12:58.89696899Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:13:03.913318216Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:13:03.944162834Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:13:03.944275089Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:13:03.968171536Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:13:03.968289222Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:13:03.968307064Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:13:03.968317945Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:13:03.968327079Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:13:08.983453196Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:13:09.015620586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:13:09.015735123Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:13:09.039124437Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:13:09.039186108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:13:09.03920186Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:13:09.039211711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:13:09.039220291Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:13:14.05520249Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:13:14.086443959Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:13:14.086550682Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:13:14.109750308Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:13:14.109791346Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:13:14.109805947Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:13:14.109818151Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:13:19.128968957Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:13:19.158788866Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:13:19.158880749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:13:19.180600025Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:13:19.180657895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:13:19.180673751Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:13:19.180685229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:13:19.180693858Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:13:24.197250388Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:13:24.226866339Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:13:24.226988685Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:13:24.250108566Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:13:24.250532754Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:13:24.250555115Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:13:24.250568933Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:13:24.25057984Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:13:29.263629912Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:13:29.294193743Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:13:29.294297853Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:13:29.314904071Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:13:29.314948422Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:13:29.31496256Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:13:29.314973761Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:13:34.329177669Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:13:34.359534755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:13:34.359649461Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:13:34.384350604Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:13:34.384392298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:13:34.384490267Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:13:34.384504022Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:13:34.384514463Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:13:39.401310334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:13:39.430882162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:13:39.430985254Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:13:39.451900028Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:13:39.451983021Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:13:39.451999331Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:13:39.452010124Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:13:39.452034902Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:13:44.468559746Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:13:44.499699051Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:13:44.499801241Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:13:44.520866736Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:13:44.520909331Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:13:44.520922721Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:13:44.520933361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:13:44.520942184Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:13:49.540322625Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:13:49.570705538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:13:49.570832887Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:13:49.593481719Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:13:49.593527384Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:13:49.593541684Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:13:49.593553129Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:13:49.593562621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:13:54.608357317Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:13:54.639437118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:13:54.639547863Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:13:54.661775234Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:13:54.661821793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:13:54.661836238Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:13:54.661846681Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:13:54.661855022Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:13:59.67721212Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:13:59.706126727Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:13:59.706218339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:13:59.730503004Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:13:59.730543528Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:13:59.730557197Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:13:59.730569415Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:13:59.73057853Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:14:04.749257155Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:14:04.778948792Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:14:04.779538885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:14:04.800920933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:14:04.800966289Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:14:04.800980382Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:14:04.800991195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:14:04.801001061Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:14:09.817661206Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:14:09.847627655Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:14:09.847745962Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:14:09.871011671Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:14:09.871055043Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:14:09.871068777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:14:09.871080668Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:14:09.871091007Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:14:14.889126674Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:14:14.921812245Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:14:14.921931632Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:14:14.948183858Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:14:14.948226854Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:14:14.948252505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:14:14.948264501Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:14:19.967749615Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:14:19.999200834Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:14:19.999339662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:14:20.024353228Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:14:20.024939402Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:14:20.02496445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:14:20.024978272Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:14:20.024990361Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:14:25.041192922Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:14:25.072322513Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:14:25.072531958Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:14:25.09759396Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:14:25.097634574Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:14:25.097649063Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:14:25.097659975Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:14:25.097670275Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:14:30.115467533Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:14:30.145382641Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:14:30.145497536Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:14:30.168247283Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:14:30.16829036Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:14:30.16830291Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:14:30.168312822Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:14:30.168321148Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:14:35.187620972Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:14:35.216933951Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:14:35.217034203Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:14:35.241052457Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:14:35.241095103Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:14:35.241108197Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:14:35.241118868Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:14:35.241127866Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:14:40.256289442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:14:40.287347557Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:14:40.287438548Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:14:40.311120907Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:14:40.311163702Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:14:40.311177885Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:14:40.311189436Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:14:40.311199884Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:14:45.330557666Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:14:45.362583393Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:14:45.36267199Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:14:45.386649789Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:14:45.386692856Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:14:45.386706024Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:14:45.386716767Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:14:45.386726047Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:14:50.403226851Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:14:50.433600237Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:14:50.433740776Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:14:50.455910674Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:14:50.455955367Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:14:50.455970114Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:14:50.455983146Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:14:50.455992231Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:14:55.478655901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:14:55.507714962Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:14:55.507827767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:14:55.532164791Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:14:55.532204776Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:14:55.532217908Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:14:55.532305751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:14:55.532521109Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:15:00.54845197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:15:00.579203823Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:15:00.579376487Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:15:00.601609861Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:15:00.601664229Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:15:00.601677882Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:15:00.601687846Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:15:00.601696904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:15:05.621136951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:15:05.651804493Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:15:05.651919485Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:15:05.674444685Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:15:05.674486097Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:15:05.674501324Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:15:05.674512064Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:15:05.674521265Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:15:10.690624899Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:15:10.719461531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:15:10.719554121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:15:10.743009124Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:15:10.743064332Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:15:10.743078598Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:15:10.743089078Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:15:10.743097482Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:15:15.761368607Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:15:15.790885416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:15:15.790968653Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:15:15.814833826Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:15:15.814877221Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:15:15.814892016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:15:15.814903052Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:15:20.835332273Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:15:20.864746Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:15:20.864843017Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:15:20.886170624Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:15:20.886210506Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:15:20.886223928Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:15:20.886246051Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:15:20.886255511Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:15:25.903489374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:15:25.931471086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:15:25.931573601Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:15:25.957110884Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:15:25.9571522Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:15:25.957168207Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:15:25.957179887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:15:25.957190954Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:15:30.975836422Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:15:31.006732384Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:15:31.006872091Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:15:31.027197012Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:15:31.027250183Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:15:31.027267488Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:15:31.027277269Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:15:31.027286666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:15:36.045873956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:15:36.075451703Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:15:36.075571485Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:15:36.099494149Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:15:36.099534777Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:15:36.099547717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:15:36.099558629Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:15:36.099568489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:15:41.116843518Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:15:41.147142028Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:15:41.147250532Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:15:41.172600212Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:15:41.172656431Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:15:41.172673315Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:15:41.17268529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:15:41.172694467Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:15:46.193758858Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:15:46.224611798Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:15:46.224737929Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:15:46.247479751Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:15:46.247521844Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:15:46.247538002Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:15:46.247549225Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:15:46.247558116Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:15:51.268195225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:15:51.297368122Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:15:51.297488695Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:15:51.322352278Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:15:51.322396434Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:15:51.32241183Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:15:51.322451489Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:15:51.322460538Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:15:56.341099356Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:15:56.370551421Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:15:56.37064358Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:15:56.396287883Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:15:56.396331186Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:15:56.396344779Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:15:56.396355683Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:15:56.396365084Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:16:01.414568731Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:16:01.445679922Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:16:01.445774685Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:16:01.472742406Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:16:01.472785139Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:16:01.472798105Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:16:01.472809498Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:16:01.4728186Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:16:06.495900291Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:16:06.524260957Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:16:06.524347494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:16:06.549050762Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:16:06.549094344Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:16:06.549108716Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:16:06.549120374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:16:06.549130048Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:16:11.567710491Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:16:11.596560039Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:16:11.596666529Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:16:11.622712224Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:16:11.62275733Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:16:11.622771221Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:16:11.622801722Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:16:11.62281207Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:16:16.63892851Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:16:16.669148305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:16:16.669267092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:16:16.692807602Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:16:16.692852101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:16:16.692866909Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:16:16.692878079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:16:16.69288674Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:16:21.709160279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:16:21.739644282Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:16:21.739757157Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:16:21.762507595Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:16:21.762555049Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:16:21.762570845Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:16:21.762582221Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:16:21.762591888Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:16:26.779084373Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:16:26.808196752Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:16:26.808336216Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:16:26.829448639Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:16:26.82949606Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:16:26.829511073Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:16:26.829520554Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:16:26.829529583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:16:31.84907199Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:16:31.877268026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:16:31.87738497Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:16:31.899461218Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:16:31.899518237Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:16:31.899534312Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:16:31.899544751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:16:31.899553376Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:16:36.91384026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:16:36.943174322Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:16:36.94330016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:16:36.966100091Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:16:36.9661447Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:16:36.966159169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:16:36.966168283Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:16:36.966176911Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:16:41.983871193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:16:42.013005777Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:16:42.013105964Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:16:42.037333262Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:16:42.037389048Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:16:42.037404544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:16:42.037415173Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:16:42.037423743Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:16:47.054889231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:16:47.086325246Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:16:47.086417273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:16:47.107387697Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:16:47.107429544Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:16:47.107443936Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:16:47.107456107Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:16:47.107475559Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:16:52.130302773Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:16:52.159259973Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:16:52.159353104Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:16:52.180336978Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:16:52.180401169Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:16:52.180528483Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:16:52.180542623Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:16:52.180551996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:16:57.198620384Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:16:57.227545904Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:16:57.227658197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:16:57.24825934Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:16:57.248301757Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:16:57.248317083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:16:57.248328291Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:16:57.248337181Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:17:02.264877254Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:17:02.295743981Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:17:02.295867373Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:17:02.321093292Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:17:02.321151626Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:17:02.321166689Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:17:02.321176126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:17:02.321185082Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:17:07.336082825Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:17:07.368347546Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:17:07.368531315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:17:07.390428106Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:17:07.390469799Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:17:07.39048405Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:17:07.390495695Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:17:07.390505279Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:17:12.413286563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:17:12.442414758Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:17:12.44255286Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:17:12.463858023Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:17:12.463900042Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:17:12.463913488Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:17:12.463924222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:17:12.46393344Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:17:17.48440378Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:17:17.514637534Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:17:17.514744507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:17:17.537874962Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:17:17.537930253Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:17:17.537945731Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:17:17.537955675Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:17:17.537964168Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:17:22.558541052Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:17:22.589186345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:17:22.589306032Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:17:22.609579537Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:17:22.609626528Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:17:22.609640952Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:17:22.609695146Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:17:22.609704226Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:17:27.630267595Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:17:27.658478466Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:17:27.658586964Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:17:27.68619715Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:17:27.686261247Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:17:27.686277788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:17:27.686287719Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:17:27.686296514Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:17:32.705348325Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:17:32.734016381Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:17:32.734149087Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:17:32.756359222Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:17:32.756551932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:17:32.756571924Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:17:32.756582662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:17:32.756591508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:17:37.773307243Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:17:37.800180302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:17:37.800293176Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:17:37.823901494Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:17:37.823949288Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:17:37.823963667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:17:37.823974401Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:17:37.823982309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:17:42.83929254Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:17:42.866157231Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:17:42.866279764Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:17:42.888482735Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:17:42.888533888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:17:42.888548037Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:17:42.888558972Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:17:42.88856862Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:17:47.905639336Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:17:47.934291645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:17:47.934414781Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:17:47.957902789Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:17:47.957946352Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:17:47.957960692Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:17:47.957972911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:17:47.957981577Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:17:52.97554999Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:17:53.003496025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:17:53.0035935Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:17:53.028106901Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:17:53.028151436Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:17:53.02816551Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:17:53.028176591Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:17:58.043337126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:17:58.07190682Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:17:58.072000464Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:17:58.094962185Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:17:58.095006654Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:17:58.095020421Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:17:58.095030611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:17:58.095040803Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:18:03.111272713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:18:03.14149061Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:18:03.141631038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:18:03.166506951Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:18:03.166548547Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:18:03.166561977Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:18:03.166572495Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:18:03.166581226Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:18:08.180936929Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:18:08.209327067Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:18:08.209432586Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:18:08.23067671Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:18:08.230718725Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:18:08.230732153Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:18:13.242391343Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:18:13.271219274Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:18:13.271343039Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:18:13.295433045Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:18:13.295473839Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:18:13.29548802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:18:13.295499813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:18:13.295509876Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:18:18.313309879Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:18:18.342635265Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:18:18.342774033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:18:18.369058585Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:18:18.369098634Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:18:18.369114326Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:18:18.369125725Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:18:18.369136779Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:18:23.385298139Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:18:23.413828643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:18:23.41392391Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:18:23.438110585Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:18:23.438150989Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:18:23.438165139Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:18:23.438177352Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:18:23.438188228Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:18:28.453871968Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:18:28.485201504Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:18:28.48533251Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:18:28.505733941Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:18:28.505796356Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:18:28.505809964Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:18:28.50583323Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:18:28.505942325Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:18:33.52039333Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:18:33.550663405Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:18:33.550762944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:18:33.573597505Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:18:33.573638955Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:18:33.573653262Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:18:33.573663979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:18:33.573673709Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:18:38.593786132Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:18:38.622980677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:18:38.623093293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:18:38.64832713Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:18:38.648381355Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:18:38.648396084Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:18:38.648406552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:18:38.648483813Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:18:43.663904568Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:18:43.693812455Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:18:43.693922915Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:18:43.717381234Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:18:43.717424795Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:18:43.717439838Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:18:43.717452092Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:18:43.717462205Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:18:48.737331811Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:18:48.768106111Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:18:48.768216695Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:18:48.791612337Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:18:48.791656037Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:18:48.791670802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:18:48.79168247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:18:48.791692652Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:18:53.805285945Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:18:53.835013229Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:18:53.83513439Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:18:53.857658295Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:18:53.857702225Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:18:53.857716944Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:18:53.857727519Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:18:53.857737027Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:18:58.872541314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:18:58.903155019Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:18:58.903271166Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:18:58.927997422Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:18:58.928039069Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:18:58.928067351Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:18:58.928077394Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:18:58.928085087Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:19:03.946927542Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:19:03.975677621Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:19:03.975789469Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:19:03.997834873Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:19:03.997878563Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:19:03.997892982Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:19:03.997917653Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:19:03.997927794Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:19:09.017787269Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:19:09.048932145Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:19:09.04904666Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:19:09.072116143Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:19:09.072162901Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:19:09.072177596Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:19:09.07218735Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:19:09.072196193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:19:14.085951742Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:19:14.115348817Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:19:14.115463783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:19:14.139007268Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:19:14.13904866Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:19:14.139061745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:19:14.13907427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:19:14.139083844Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:19:19.158676411Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:19:19.190115569Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:19:19.190221648Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:19:19.213026454Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:19:19.213064531Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:19:19.213078214Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:19:19.213089355Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:19:19.213100283Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:19:24.229968594Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:19:24.260964466Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:19:24.261079416Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:19:24.28573199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:19:24.285793286Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:19:24.285807372Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:19:24.285817664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:19:24.285826239Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:19:29.301616477Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:19:29.331108953Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:19:29.331222228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:19:29.351515408Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:19:29.351557291Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:19:29.35157159Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:19:29.351583507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:19:29.351593815Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:19:34.365876471Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:19:34.393949499Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:19:34.39406936Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:19:34.41875201Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:19:34.418793136Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:19:34.418807699Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:19:34.418819601Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:19:34.418828849Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:19:39.433289569Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:19:39.462117593Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:19:39.462227531Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:19:39.487382839Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:19:39.487427956Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:19:39.487441698Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:19:39.487454459Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:19:39.487463621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:19:44.503165061Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:19:44.535151533Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:19:44.535279671Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:19:44.556055838Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:19:44.556098647Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:19:44.556112876Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:19:44.556124949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:19:44.556134238Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:19:49.576451155Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:19:49.606371848Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:19:49.606512837Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:19:49.631068433Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:19:49.631108182Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:19:49.631137406Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:19:49.631147627Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:19:49.631155757Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:19:54.64751149Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:19:54.676087873Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:19:54.676181735Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:19:54.699268086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:19:54.699312199Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:19:54.699327736Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:19:54.699340102Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:19:54.699350239Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:19:59.719692006Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:19:59.745955894Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:19:59.746067761Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:19:59.767888008Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:19:59.76794056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:19:59.767956191Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:19:59.767966761Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:19:59.76797561Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:20:04.785076129Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:20:04.813392723Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:20:04.813483731Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:20:04.836771976Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:20:04.83683054Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:20:04.83686281Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:20:04.83687302Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:20:04.836890783Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:20:09.854593529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:20:09.885864805Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:20:09.885980972Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:20:09.912029938Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:20:09.912074737Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:20:09.912088709Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:20:09.912100899Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:20:09.912110899Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:20:14.930525295Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:20:14.960143243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:20:14.960274951Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:20:14.984894327Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:20:14.98493696Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:20:14.98495077Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:20:14.984963235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:20:14.984972679Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:20:20.005328296Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:20:20.035560697Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:20:20.035763669Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:20:20.0592553Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:20:20.059304572Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:20:20.059333649Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:20:20.059345058Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:20:20.059353626Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:20:25.077550161Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:20:25.110349308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:20:25.110463669Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:20:25.134926694Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:20:25.134968097Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:20:25.13498235Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:20:25.134994086Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:20:25.135002734Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:20:30.151842844Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:20:30.182088259Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:20:30.182186687Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:20:30.20425911Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:20:30.204300249Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:20:30.204333739Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:20:30.204344388Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:20:30.204352579Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:20:35.223849467Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:20:35.252946436Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:20:35.253058984Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:20:35.280929358Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:20:35.28097535Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:20:35.280990685Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:20:35.281001618Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:20:35.281010965Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:20:40.297622125Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:20:40.327544785Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:20:40.327668784Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:20:40.348210951Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:20:40.348283756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:20:40.348299513Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:20:40.348310031Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:20:40.348529078Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:20:45.366092938Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:20:45.395826488Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:20:45.395922391Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:20:45.418589198Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:20:45.418630675Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:20:45.418643599Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:20:45.41865441Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:20:45.418664823Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:20:50.4348662Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:20:50.465734837Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:20:50.465836265Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:20:50.487337632Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:20:50.487393587Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:20:50.48740746Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:20:50.487417656Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:20:50.487426766Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:20:55.503333177Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:20:55.535683996Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:20:55.535775275Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:20:55.556896621Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:20:55.55694194Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:20:55.556955507Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:20:55.556966147Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:20:55.556975902Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:21:00.573332612Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:21:00.603484185Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:21:00.603577281Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:21:00.628006405Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:21:00.628049259Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:21:00.628063213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:21:00.628074822Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:21:00.628084178Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:21:05.647147748Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:21:05.677310678Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:21:05.677440529Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:21:05.697947005Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:21:05.69800266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:21:05.698017057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:21:05.698027429Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:21:05.698035969Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:21:10.719659671Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:21:10.748326077Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:21:10.748528949Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:21:10.775063648Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:21:10.775119536Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:21:10.775136824Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:21:10.775147898Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:21:10.775272025Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:21:15.795823328Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:21:15.825513851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:21:15.825612686Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:21:15.849833431Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:21:15.849875742Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:21:15.849890108Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:21:15.849930766Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:21:15.849948403Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:21:20.871323016Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:21:20.900969716Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:21:20.901071303Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:21:20.92457927Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:21:20.92463268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:21:20.924646184Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:21:20.924656873Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:21:20.924665462Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:21:25.943103979Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:21:25.973343122Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:21:25.973473967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:21:25.993198809Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:21:25.993255108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:21:25.993270395Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:21:25.993280899Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:21:25.993289325Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:21:31.014634037Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:21:31.044190722Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:21:31.044336131Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:21:31.070340515Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:21:31.070386313Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:21:31.070401057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:21:31.070413299Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:21:31.070423167Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:21:36.087843329Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:21:36.115876313Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:21:36.116005746Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:21:36.137105592Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:21:36.137166129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:21:36.137181282Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:21:36.137230109Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:21:36.137251793Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:21:41.15530928Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:21:41.185606126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:21:41.185727377Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:21:41.213214886Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:21:41.213269409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:21:41.213285985Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:21:41.213296176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:21:41.21330519Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:21:46.232456721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:21:46.264297835Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:21:46.264427672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:21:46.286904492Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:21:46.286948434Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:21:46.286963125Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:21:46.28697541Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:21:46.286985835Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:21:51.304228813Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:21:51.333992485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:21:51.334083379Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:21:51.354467241Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:21:51.354535278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:21:51.354551587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:21:51.354620397Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:21:51.354631448Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:21:56.374521453Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:21:56.403544145Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:21:56.403635528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:21:56.424101807Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:21:56.424157621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:21:56.424198385Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:21:56.424209265Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:21:56.424231746Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:22:01.464112936Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:22:01.607768391Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:22:01.608020079Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:22:01.730324468Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:22:01.730377701Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:22:01.730393256Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:22:01.730405496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:22:01.730415279Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:22:06.756038136Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:22:06.787920793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:22:06.788041227Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:22:06.809906096Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:22:06.809946941Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:22:06.809961094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:22:06.80997191Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:22:06.809981568Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:22:11.829230505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:22:11.857471148Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:22:11.857583436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:22:11.882224135Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:22:11.882282447Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:22:11.882296883Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:22:11.882306888Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:22:11.882316574Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:22:16.897394982Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:22:16.929035617Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:22:16.929533504Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:22:16.948649571Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:22:16.948691068Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:22:16.948705341Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:22:16.948718058Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:22:16.948728514Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:22:21.968263026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:22:21.996279254Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:22:21.996393202Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:22:22.021363925Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:22:22.021414685Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:22:22.02143026Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:22:22.021442791Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:22:22.021452522Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:22:27.038202195Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:22:27.068257156Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:22:27.068366484Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:22:27.088600584Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:22:27.088643277Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:22:27.088657331Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:22:27.088668452Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:22:27.088677155Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:22:32.103095903Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:22:32.134685025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:22:32.134795757Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:22:32.158760991Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:22:32.158805124Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:22:32.158818805Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:22:32.158830734Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:22:32.158840157Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:22:37.172732933Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:22:37.202211121Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:22:37.202336458Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:22:37.226639723Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:22:37.226683172Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:22:37.226697479Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:22:37.226709746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:22:37.226718983Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:22:42.243024939Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:22:42.273061652Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:22:42.273184714Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:22:42.29748941Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:22:42.297532216Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:22:42.2975466Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:22:42.297559396Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:22:42.297568067Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:22:47.316054892Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:22:47.346002307Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:22:47.346119499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:22:47.368556087Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:22:47.36900592Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:22:47.369029341Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:22:47.369041974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:22:47.369053731Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:22:52.388253313Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:22:52.416624244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:22:52.416729239Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:22:52.440341115Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:22:52.440388602Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:22:52.440403258Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:22:52.44041211Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:22:52.440418829Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:22:57.460799032Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:22:57.491742362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:22:57.491847061Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:22:57.516642495Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:22:57.516687304Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:22:57.516702122Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:22:57.516713965Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:22:57.516723127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:23:02.532546661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:23:02.560938662Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:23:02.561051851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:23:02.582042317Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:23:02.582086931Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:23:02.582100141Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:23:02.582110668Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:23:02.582120687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:23:07.59815422Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:23:07.625953291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:23:07.626044845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:23:07.651669851Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:23:07.651712621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:23:07.651726884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:23:07.65173945Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:23:07.651748224Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:23:12.670279836Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:23:12.701202633Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:23:12.701314722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:23:12.725358443Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:23:12.725406697Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:23:12.725421555Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:23:12.725433199Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:23:12.725442592Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:23:17.742613244Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:23:17.772034382Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:23:17.772140356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:23:17.794050828Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:23:17.794112698Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:23:17.794128109Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:23:17.794197479Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:23:17.794207384Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:23:22.811762898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:23:22.839689668Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:23:22.839800538Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:23:22.865503827Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:23:22.865545371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:23:22.865558928Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:23:22.865570411Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:23:22.865579785Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:23:27.884641638Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:23:27.914377911Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:23:27.914477529Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:23:27.934103733Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:23:27.934146382Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:23:27.934160168Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:23:27.934217122Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:23:27.934226786Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:23:32.954162473Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:23:32.984160041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:23:32.984271816Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:23:33.008498427Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:23:33.008562261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:23:33.00857785Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:23:33.008588085Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:23:33.008598415Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:23:38.02377428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:23:38.052021143Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:23:38.052131828Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:23:38.073263248Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:23:38.073336825Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:23:38.0733526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:23:38.073409706Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:23:38.073420042Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:23:43.090403114Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:23:43.12021705Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:23:43.120318266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:23:43.141028551Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:23:43.141071446Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:23:43.141086264Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:23:43.141098096Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:23:43.141107687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:23:48.161198182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:23:48.191641411Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:23:48.191769671Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:23:48.215402866Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:23:48.215472394Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:23:48.215487538Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:23:48.21549682Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:23:48.21550497Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:23:53.23167998Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:23:53.259901628Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:23:53.259991787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:23:53.281301897Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:23:53.281344347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:23:53.28135933Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:23:53.281371567Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:23:53.281381571Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:23:58.302855899Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:23:58.333625315Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:23:58.333752898Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:23:58.354088238Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:23:58.354128555Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:23:58.354144577Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:23:58.354156833Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:23:58.354166202Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:24:03.37052867Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:24:03.41690103Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:24:03.417003198Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:24:03.441254714Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:24:03.441300949Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:24:03.44131701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:24:03.441328578Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:24:03.441337972Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:24:08.45936264Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:24:08.489747967Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:24:08.48987575Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:24:08.513316841Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:24:08.513358326Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:24:08.513383514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:24:08.51339424Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:24:08.513403032Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:24:13.528282314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:24:13.556595537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:24:13.556686389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:24:13.581696106Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:24:13.581735254Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:24:13.581750205Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:24:13.581761486Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:24:13.581771476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:24:18.604011412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:24:18.633493506Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:24:18.633600782Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:24:18.653036494Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:24:18.653111108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:24:18.65312619Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:24:18.653170702Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:24:18.653181787Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:24:23.667087167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:24:23.694893831Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:24:23.695012938Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:24:23.716912124Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:24:23.716957294Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:24:23.716971201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:24:23.716982455Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:24:23.716992906Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:24:28.733288828Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:24:28.76342662Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:24:28.763549169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:24:28.786101922Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:24:28.786144333Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:24:28.78615809Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:24:28.78616954Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:24:28.786179617Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:24:33.802368612Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:24:33.831709036Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:24:33.83184779Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:24:33.857736127Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:24:33.857777173Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:24:33.857790683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:24:33.857825069Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:24:33.85783387Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:24:38.874542012Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:24:38.904731308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:24:38.904854824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:24:38.928348961Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:24:38.928573122Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:24:38.928641879Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:24:38.928654576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:24:38.928664125Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:24:43.946335696Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:24:43.975626763Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:24:43.975724904Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:24:43.999028545Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:24:43.99908595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:24:43.999100581Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:24:43.99911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:24:43.999120028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:24:49.019481342Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:24:49.049981887Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:24:49.050077256Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:24:49.070972882Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:24:49.071017776Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:24:49.071032144Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:24:49.07104256Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:24:49.071051471Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:24:54.087465746Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:24:54.117339368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:24:54.117453982Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:24:54.143893297Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:24:54.143937445Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:24:54.14395146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:24:54.143962465Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:24:54.14397086Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:24:59.158925028Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:24:59.189028807Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:24:59.189152581Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:24:59.211201354Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:24:59.21125721Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:24:59.21127215Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:24:59.211282203Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:24:59.211291022Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:25:04.227924728Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:25:04.257746861Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:25:04.257878311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:25:04.282393624Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:25:04.282448308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:25:04.282462971Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:25:04.282472981Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:25:04.282481626Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:25:09.298866412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:25:09.330719095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:25:09.330828988Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:25:09.353836829Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:25:09.35388196Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:25:09.353896123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:25:09.353906986Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:25:09.353916692Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:25:14.371278337Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:25:14.398686802Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:25:14.398792638Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:25:14.422140338Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:25:14.422186577Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:25:14.42220087Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:25:14.422210239Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:25:14.422217339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:25:19.442748299Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:25:19.472075266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:25:19.472165092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:25:19.494031409Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:25:19.494075086Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:25:19.49409003Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:25:24.51020331Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:25:24.557989599Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:25:24.558128319Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:25:24.583101543Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:25:24.583143149Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:25:24.58315716Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:25:24.583170122Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:25:24.583179434Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:25:29.599447349Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:25:29.630920283Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:25:29.631013404Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:25:29.654543609Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:25:29.65458691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:25:29.654601158Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:25:29.654613246Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:25:29.654622077Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:25:34.671279986Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:25:34.700844888Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:25:34.700951385Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:25:34.725371438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:25:34.725417266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:25:34.725432712Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:25:34.725444002Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:25:34.72545407Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:25:39.744603057Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:25:39.772031586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:25:39.772125433Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:25:39.796537409Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:25:39.796581301Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:25:39.796596309Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:25:39.796609173Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:25:39.796619539Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:25:44.815082973Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:25:44.843128614Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:25:44.843220408Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:25:44.866921657Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:25:44.866963487Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:25:44.866977427Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:25:44.866988731Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:25:44.866997139Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:25:49.884918225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:25:49.915665503Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:25:49.915757914Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:25:49.939647469Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:25:49.939728965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:25:49.939743848Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:25:49.939753313Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:25:49.939761695Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:25:54.959170225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:25:54.989460837Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:25:54.989561644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:25:55.01504532Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:25:55.015091014Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:25:55.01510658Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:25:55.015118548Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:25:55.015127819Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:26:00.097223111Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:26:00.128760133Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:26:00.128871838Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:26:00.159081044Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:26:00.159124033Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:26:00.159138819Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:26:00.159174795Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:26:00.15918378Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:26:05.180174225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:26:05.206422776Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:26:05.206515659Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:26:05.232067348Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:26:05.232112491Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:26:05.232125011Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:26:05.232136331Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:26:05.232144761Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:26:10.248339451Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:26:10.277553708Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:26:10.277642614Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:26:10.301012824Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:26:10.301056628Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:26:15.316212531Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:26:15.346902199Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:26:15.347017498Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:26:15.370478664Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:26:15.370519781Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:26:15.370534581Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:26:15.370546393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:26:15.370556871Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:26:20.387737826Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:26:20.418878925Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:26:20.418972796Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:26:20.439123446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:26:20.43916668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:26:20.439179535Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:26:25.455074264Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:26:25.485667905Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:26:25.485798018Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:26:25.510656333Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:26:25.510697015Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:26:25.510709758Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:26:25.510722454Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:26:30.526168536Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:26:30.555870538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:26:30.555953689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:26:30.57826358Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:26:30.57875027Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:26:30.578774349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:26:30.578787693Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:26:30.578798968Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:26:35.598297626Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:26:35.627166755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:26:35.627322391Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:26:35.651516371Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:26:35.651571082Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:26:35.651585626Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:26:35.65159612Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:26:35.651605053Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:26:40.669297292Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:26:40.698908303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:26:40.699028315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:26:40.725216989Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:26:40.725273811Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:26:40.725290042Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:26:40.725301104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:26:40.72530932Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:26:45.742216621Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:26:45.77207746Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:26:45.772166862Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:26:45.791902777Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:26:45.791950108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:26:45.791963668Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:26:45.791975297Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:26:45.791984937Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:26:50.813001632Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:26:50.843328219Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:26:50.84342191Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:26:50.864642963Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:26:50.864690776Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:26:50.864706092Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:26:55.882600426Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:26:55.91226189Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:26:55.91235757Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:26:55.932054633Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:26:55.932096932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:26:55.932111193Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:26:55.932122119Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:26:55.932132709Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:27:00.949466768Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:27:00.978970884Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:27:00.979067777Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:27:01.001096352Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:27:01.001141048Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:27:01.001156654Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:27:01.001167816Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:27:01.001177346Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:27:06.017877491Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:27:06.049691341Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:27:06.049803338Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:27:06.071618111Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:27:06.072003734Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:27:06.072027031Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:27:06.072040176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:27:06.07205144Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:27:11.087807107Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:27:11.12109231Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:27:11.121188714Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:27:11.145456866Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:27:11.145501475Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:27:11.145516581Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:27:11.145527932Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:27:11.145538295Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:27:16.161098009Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:27:16.189820264Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:27:16.189931612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:27:16.212157566Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:27:16.212216573Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:27:16.21223247Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:27:16.212295087Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:27:16.212304299Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:27:21.231298797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:27:21.260064043Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:27:21.260182512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:27:21.28750404Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:27:21.287549103Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:27:21.287563971Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:27:21.287574372Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:27:21.287584851Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:27:26.304167019Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:27:26.333171216Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:27:26.333314086Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:27:26.357052951Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:27:26.357094378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:27:26.357109575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:27:26.357143722Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:27:26.357153215Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:27:31.373189974Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:27:31.403219927Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:27:31.403339434Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:27:31.425776374Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:27:31.425826271Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:27:31.425840929Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:27:31.425850223Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:27:31.425858302Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:27:36.444326049Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:27:36.470915715Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:27:36.471006355Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:27:36.492841652Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:27:36.492884702Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:27:36.492899855Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:27:36.492912635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:27:36.492921518Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:27:41.512860136Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:27:41.541499623Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:27:41.541589519Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:27:41.561017576Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:27:41.56107525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:27:41.561090167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:27:41.561100393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:27:41.561108719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:27:46.579545063Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:27:46.61004901Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:27:46.610144447Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:27:46.632121089Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:27:46.632164561Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:27:46.632180035Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:27:46.632191711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:27:46.632201309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:27:51.648777384Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:27:51.678422676Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:27:51.678505821Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:27:51.701766601Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:27:51.701824813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:27:51.701839808Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:27:51.701849399Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:27:51.701857704Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:27:56.717070958Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:27:56.747050513Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:27:56.747158188Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:27:56.774791335Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:27:56.774833898Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:27:56.774864734Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:27:56.77487552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:27:56.774883926Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:28:01.796749262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:28:01.829563455Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:28:01.829687311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:28:01.851536199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:28:01.851581494Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:28:01.85159672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:28:01.851608558Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:28:01.851617683Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:28:06.869131406Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:28:06.899717207Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:28:06.900258948Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:28:06.923516446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:28:06.923569822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:28:06.923586016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:28:06.923595578Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:28:06.92360442Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:28:11.943797985Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:28:11.974754294Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:28:11.974854974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:28:12.002781124Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:28:12.002830761Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:28:12.002846648Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:28:12.002857197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:28:12.002866652Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:28:17.021884461Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:28:17.054102362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:28:17.054222589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:28:17.076943098Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:28:17.076992968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:28:17.077007656Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:28:17.077019546Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:28:17.077027485Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:28:22.100551235Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:28:22.130751215Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:28:22.130837422Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:28:22.156163808Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:28:22.156220758Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:28:22.156270326Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:28:22.156296228Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:28:22.156305856Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:28:27.17427735Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:28:27.204317494Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:28:27.204588945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:28:27.231583929Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:28:27.231623154Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:28:27.23163872Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:28:27.231650351Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:28:27.231659487Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:28:32.250639846Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:28:32.281975153Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:28:32.282067852Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:28:32.302532868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:28:32.302590232Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:28:32.302604891Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:28:32.302614251Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:28:32.302622656Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:28:37.317294069Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:28:37.346796767Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:28:37.346903728Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:28:37.374175516Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:28:37.374216102Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:28:37.374229231Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:28:37.37425381Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:28:37.374262818Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:28:42.395247422Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:28:42.424265032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:28:42.424361936Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:28:42.449343258Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:28:42.44938628Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:28:42.449400748Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:28:42.449412138Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:28:42.449421486Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:28:47.469604152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:28:47.499316466Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:28:47.499435103Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:28:47.526641434Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:28:47.52668327Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:28:47.526699366Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:28:47.526710059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:28:47.526720044Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:28:52.544681885Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:28:52.575146797Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:28:52.57526467Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:28:52.600052291Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:28:52.600095694Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:28:52.600109955Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:28:52.600120445Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:28:52.600131395Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:28:57.621000508Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:28:57.650951675Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:28:57.651068761Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:28:57.677458461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:28:57.677513861Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:28:57.677528349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:28:57.677590974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:28:57.677600995Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:29:02.696981218Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:29:02.726813124Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:29:02.726913761Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:29:02.751565157Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:29:02.751611383Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:29:02.751626601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:29:02.751638067Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:29:02.751647415Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:29:07.767903536Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:29:07.797474443Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:29:07.797565164Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:29:07.819981374Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:29:07.820399328Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:29:07.820755425Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:29:07.820860266Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:29:07.820960386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:29:12.841306081Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:29:12.870269336Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:29:12.870376816Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:29:12.893581395Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:29:12.893643466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:29:12.893659156Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:29:12.893669764Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:29:12.893678187Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:29:17.91155182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:29:17.941493497Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:29:17.94161608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:29:17.962386646Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:29:17.962516134Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:29:17.962534714Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:29:17.962545075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:29:17.962564042Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:29:22.978433469Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:29:23.007481903Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:29:23.007601491Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:29:23.033007937Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:29:23.033064288Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:29:23.033079962Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:29:23.033100094Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:29:23.033108875Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:29:28.047813384Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:29:28.079615626Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:29:28.079712936Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:29:28.105329173Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:29:28.10537743Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:29:28.105392037Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:29:28.105402463Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:29:28.105411316Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:29:33.122289402Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:29:33.151632555Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:29:33.151731406Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:29:33.176830156Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:29:33.176874705Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:29:33.176889359Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:29:33.176900552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:29:33.176909159Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:29:38.194668718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:29:38.224662567Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:29:38.224753068Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:29:38.244734486Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:29:38.244786298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:29:38.244802093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:29:38.244813837Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:29:38.244822735Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:29:43.261232888Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:29:43.289754744Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:29:43.289855501Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:29:43.313904167Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:29:43.313958404Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:29:43.313973901Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:29:43.313984987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:29:43.313993798Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:29:48.338292754Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:29:48.36634866Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:29:48.366809585Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:29:48.392674617Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:29:48.392752683Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:29:53.409291008Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:29:53.438414843Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:29:53.438509294Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:29:53.461860334Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:29:53.461911558Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:29:53.461928096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:29:53.461940547Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:29:53.461950308Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:29:58.47998324Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:29:58.509633295Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:29:58.509744804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:29:58.535855797Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:29:58.535900434Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:29:58.535913752Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:29:58.53592515Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:29:58.535935279Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:30:03.563368585Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:30:03.602186073Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:30:03.60231686Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:30:03.674394981Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:30:03.676349919Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:30:03.676383071Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:30:03.676395957Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:30:03.67640718Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:30:08.695284905Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:30:08.725649585Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:30:08.725774737Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:30:08.749448886Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:30:08.749496916Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:30:08.749510892Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:30:08.749521474Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:30:08.749529701Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:30:13.76951079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:30:13.799459854Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:30:13.799552245Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:30:13.824746124Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:30:13.824813912Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:30:13.824829067Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:30:13.824839353Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:30:13.824848237Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:30:18.843835947Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:30:18.873802802Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:30:18.873946729Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:30:18.893966043Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:30:18.894408704Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:30:18.894623527Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:30:18.894642222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:30:18.89465245Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:30:23.911308398Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:30:23.939578857Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:30:23.940028329Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:30:23.958744345Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:30:23.958786174Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:30:23.958800365Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:30:23.958809882Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:30:23.958819992Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:30:28.974124689Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:30:29.002544475Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:30:29.002645794Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:30:29.022435456Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:30:29.022503816Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:30:29.022521845Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:30:29.022533136Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:30:29.022542961Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:30:34.039304439Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:30:34.067401898Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:30:34.067511897Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:30:34.087473525Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:30:34.087518057Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:30:34.087531771Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:30:34.087543691Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:30:34.087553462Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:30:39.106275509Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:30:39.133375134Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:30:39.133485236Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:30:39.156990636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:30:39.157037045Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:30:39.157051641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:30:39.157062684Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:30:39.157072736Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:30:44.172282056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:30:44.202086502Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:30:44.202182209Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:30:44.223572441Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:30:44.223630128Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:30:44.223644867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:30:44.223654275Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:30:44.223662853Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:30:49.246290943Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:30:49.274739218Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:30:49.274843146Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:30:49.298638796Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:30:49.298681189Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:30:49.298695668Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:30:54.318398629Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:30:54.347355374Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:30:54.347473798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:30:54.371135537Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:30:54.371180382Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:30:54.371194552Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:30:54.371206048Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:30:54.37121577Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:30:59.38762139Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:30:59.416356531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:30:59.416585561Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:30:59.439957582Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:30:59.439999047Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:30:59.440052746Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:30:59.440064111Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:30:59.440072878Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:31:04.457341052Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:31:04.488199916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:31:04.488318328Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:31:04.511057931Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:31:04.511102138Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:31:04.51111653Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:31:04.511128668Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:31:04.511139605Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:31:09.529087205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:31:09.560333416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:31:09.560558415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:31:09.583958018Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:31:09.584003496Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:31:09.584017889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:31:09.584027636Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:31:09.58403864Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:31:14.601136409Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:31:14.631474458Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:31:14.631565708Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:31:14.656732385Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:31:14.656779321Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:31:14.656794419Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:31:19.671189917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:31:19.702328431Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:31:19.702425599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:31:19.725702594Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:31:19.725749266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:31:19.725764928Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:31:19.725775674Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:31:19.725783465Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:31:24.740788986Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:31:24.771727223Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:31:24.771818394Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:31:24.7937694Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:31:24.793836153Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:31:24.793852949Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:31:24.793914214Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:31:24.793925496Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:31:29.811309015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:31:29.840052515Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:31:29.840175582Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:31:29.863134916Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:31:29.863176625Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:31:29.863189989Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:31:29.86320105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:31:29.863210466Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:31:34.880292412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:31:34.909315112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:31:34.909412744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:31:34.929526271Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:31:34.929569063Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:31:34.929582692Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:31:34.929593221Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:31:34.929602373Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:31:39.947266716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:31:39.977555567Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:31:39.97764824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:31:40.000388065Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:31:40.000498051Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:31:40.000515745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:31:40.000525381Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:31:40.000534514Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:31:45.017089134Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:31:45.048161444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:31:45.048282089Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:31:45.067931821Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:31:45.067972258Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:31:45.067985455Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:31:45.067996573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:31:45.068006923Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:31:50.086551909Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:31:50.114930267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:31:50.115034917Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:31:50.138351771Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:31:50.138408068Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:31:50.138424112Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:31:50.138485087Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:31:50.138494507Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:31:55.153088478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:31:55.184134246Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:31:55.184227404Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:31:55.206755571Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:31:55.206795992Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:31:55.20681022Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:31:55.206821291Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:31:55.206830789Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:32:00.226056818Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:32:00.257864245Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:32:00.257994419Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:32:00.281646671Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:32:00.281693181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:32:00.281707443Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:32:00.281731985Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:32:00.281742294Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:32:05.301268533Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:32:05.331696229Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:32:05.331787986Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:32:05.356203002Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:32:05.356259095Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:32:05.356274845Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:32:05.356284405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:32:05.356292968Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:32:10.37602131Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:32:10.406230794Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:32:10.406357655Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:32:10.431395346Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:32:10.431439275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:32:10.431453496Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:32:10.431464346Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:32:10.431474725Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:32:15.450084317Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:32:15.481178406Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:32:15.481290363Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:32:15.506874406Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:32:15.506918537Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:32:15.506933458Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:32:15.506954347Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:32:15.506963538Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:32:20.529308946Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:32:20.555614464Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:32:20.555706038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:32:20.577752755Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:32:20.577794568Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:32:20.577809108Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:32:20.577819666Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:32:20.577828158Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:32:25.596266544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:32:25.625313719Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:32:25.62541957Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:32:25.64932009Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:32:25.649360749Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:32:25.649374765Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:32:25.649385344Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:32:25.649394398Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:32:30.665801933Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:32:30.697878965Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:32:30.697979615Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:32:30.723007053Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:32:30.723047159Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:32:30.723060013Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:32:30.723070933Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:32:30.723080249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:32:35.742206391Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:32:35.772515706Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:32:35.772632166Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:32:35.794540529Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:32:35.794612758Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:32:35.794650249Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:32:35.794701988Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:32:35.79471141Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:32:40.815402937Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:32:40.843618316Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:32:40.843719627Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:32:40.870856299Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:32:40.870908595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:32:40.870924196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:32:40.870934609Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:32:40.870944091Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:32:45.887877397Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:32:45.916398019Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:32:45.916675293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:32:45.938373691Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:32:45.938432572Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:32:45.938447218Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:32:45.938457298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:32:45.938465453Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:32:50.9547916Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:32:50.985361528Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:32:50.985473562Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:32:51.009265355Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:32:51.009305855Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:32:51.009321325Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:32:51.009344485Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:32:51.009353228Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:32:56.028195943Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:32:56.058421843Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:32:56.058523572Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:32:56.081524117Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:32:56.081567971Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:32:56.081584192Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:32:56.081595986Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:32:56.081608464Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:33:01.099398228Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:33:01.127433444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:33:01.12755647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:33:01.152150133Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:33:01.152190749Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:33:01.152263235Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:33:01.152274664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:33:01.152282812Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:33:06.170689648Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:33:06.201339779Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:33:06.201458753Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:33:06.224998687Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:33:11.241614715Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:33:11.27123416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:33:11.271357371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:33:11.293556565Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:33:11.293598902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:33:11.293613534Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:33:16.31595441Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:33:16.34514774Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:33:16.345285473Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:33:16.370573091Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:33:16.370629706Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:33:16.370643656Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:33:16.370653426Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:33:16.370661779Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:33:21.389981966Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:33:21.417365715Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:33:21.417473522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:33:21.441160291Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:33:21.441198407Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:33:21.441231299Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:33:21.441266366Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:33:21.441274803Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:33:26.457466671Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:33:26.486887092Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:33:26.486996939Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:33:26.509559767Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:33:26.509602451Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:33:26.509615966Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:33:26.509626566Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:33:26.50963751Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:33:31.529279149Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:33:31.558417116Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:33:31.558508139Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:33:31.578923452Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:33:31.578966953Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:33:31.578990023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:33:31.579001648Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:33:31.579010071Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:33:36.598935076Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:33:36.628599653Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:33:36.628689771Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:33:36.652845017Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:33:36.652891857Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:33:36.652905926Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:33:36.652916908Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:33:36.652926086Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:33:41.671260613Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:33:41.701926057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:33:41.70202046Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:33:41.721827466Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:33:41.721871465Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:33:41.721885495Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:33:41.721896839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:33:41.721906475Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:33:46.739750951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:33:46.768229362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:33:46.768334001Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:33:46.791231256Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:33:46.791291372Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:33:46.791306596Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:33:46.791316937Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:33:46.791326245Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:33:51.81029134Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:33:51.839111998Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:33:51.839223486Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:33:51.863733936Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:33:51.864173894Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:33:51.864197122Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:33:51.864212098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:33:51.864223603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:33:56.878788474Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:33:56.907818337Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:33:56.907927611Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:33:56.928671478Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:33:56.928720019Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:33:56.928734744Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:33:56.928747049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:33:56.928756971Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:34:01.963594118Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:34:01.995312811Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:34:01.99543195Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:34:02.021165335Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:34:02.021215562Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:34:02.021229038Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:34:02.021252324Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:34:02.021261893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:34:07.037830343Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:34:07.068035102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:34:07.068130112Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:34:07.089279928Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:34:07.089321803Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:34:07.089334851Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:34:07.089345592Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:34:12.108558383Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:34:12.139584406Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:34:12.139682785Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:34:12.16741774Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:34:12.167468525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:34:12.167484262Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:34:12.167496658Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:34:12.167507091Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:34:17.184553164Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:34:17.213290872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:34:17.213386147Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:34:17.235076304Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:34:17.235119929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:34:17.235134564Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:34:17.235147321Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:34:17.235156561Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:34:22.25706284Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:34:22.28777973Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:34:22.287871296Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:34:22.309374286Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:34:22.309422609Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:34:22.309437692Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:34:22.309447264Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:34:22.309455869Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:34:27.331054109Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:34:27.360206601Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:34:27.360314397Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:34:27.385047478Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:34:27.385091135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:34:27.385104627Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:34:27.385115806Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:34:27.385124426Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:34:32.406096194Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:34:32.434767768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:34:32.4348734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:34:32.457943056Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:34:32.458010476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:34:32.458025926Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:34:32.458036972Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:34:32.45804559Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:34:37.470458708Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:34:37.497698505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:34:37.497789228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:34:37.521594771Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:34:37.521652725Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:34:37.521681203Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:34:37.521691557Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:34:37.52170843Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:34:42.53599733Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:34:42.565021909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:34:42.565124161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:34:42.585647476Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:34:42.585715722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:34:47.605297073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:34:47.634466723Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:34:47.634560391Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:34:47.654707223Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:34:47.65475126Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:34:47.654765296Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:34:47.654775714Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:34:47.65478483Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:34:52.669385317Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:34:52.698164713Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:34:52.698295342Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:34:52.719865184Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:34:52.719907225Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:34:52.71992173Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:34:52.719933764Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:34:52.719943136Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:34:57.74177313Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:34:57.772263928Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:34:57.772385625Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:34:57.796478606Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:34:57.796543357Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:34:57.796559813Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:34:57.796602813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:34:57.796612208Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:35:02.813344737Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:35:02.842889151Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:35:02.842985587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:35:02.868840279Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:35:02.868883111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:35:02.868896411Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:35:02.868907704Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:35:02.868916835Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:35:07.887263195Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:35:07.915397454Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:35:07.915551679Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:35:07.935012611Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:35:07.935059553Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:35:07.935105714Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:35:07.935117051Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:35:07.935126483Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:35:12.951931468Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:35:12.981263613Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:35:12.981365766Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:35:13.006901327Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:35:13.006951148Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:35:13.00696566Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:35:13.006977423Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:35:13.006987454Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:35:18.022930828Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:35:18.054565324Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:35:18.054677356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:35:18.077003323Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:35:18.077046787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:35:18.077062171Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:35:18.077073049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:35:18.077083802Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:35:23.093867521Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:35:23.123987308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:35:23.124086981Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:35:23.146962892Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:35:23.147002897Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:35:23.147015875Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:35:23.147026984Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:35:23.147036611Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:35:28.163846854Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:35:28.195351091Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:35:28.195481911Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:35:28.215473221Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:35:28.215519944Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:35:28.215534058Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:35:28.21554282Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:35:28.215550049Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:35:33.234016706Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:35:33.263752897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:35:33.263873442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:35:33.284487548Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:35:33.284563982Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:35:33.284580028Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:35:33.28459099Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:35:33.284600766Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:35:38.300804872Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:35:38.331392126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:35:38.331489837Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:35:38.355548013Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:35:38.355589449Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:35:38.355603464Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:35:38.355616125Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:35:38.355625161Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:35:43.372285006Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:35:43.402397585Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:35:43.402487551Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:35:43.426372318Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:35:43.426414973Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:35:43.426429439Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:35:43.426441933Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:35:43.426451163Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:35:48.442900771Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:35:48.470801503Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:35:48.470897592Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:35:48.495809002Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:35:48.49585154Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:35:48.495866348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:35:48.495875985Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:35:48.495884966Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:35:53.511230064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:35:53.54137732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:35:53.541487171Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:35:53.561098653Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:35:53.561150747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:35:53.561167716Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:35:53.561178035Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:35:53.561187032Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:35:58.577986474Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:35:58.6063281Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:35:58.606420058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:35:58.630359713Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:35:58.630417711Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:35:58.630433436Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:35:58.630491477Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:35:58.630501519Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:36:03.649165661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:36:03.678890108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:36:03.679134141Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:36:03.707060211Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:36:03.707102098Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:36:03.707115913Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:36:03.707127788Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:36:03.707137165Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:36:08.72636597Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:36:08.755428478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:36:08.755518771Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:36:08.780230283Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:36:08.780286581Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:36:08.780300813Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:36:08.780311526Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:36:08.780320611Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:36:13.79718341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:36:13.827432927Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:36:13.827553757Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:36:13.85267346Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:36:13.852722047Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:36:13.852736716Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:36:13.852748054Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:36:13.852757186Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:36:18.87218331Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:36:18.901502543Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:36:18.901611009Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:36:18.922029476Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:36:18.922487038Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:36:18.922512795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:36:18.922525327Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:36:18.92253659Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:36:23.936753504Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:36:23.965942848Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:36:23.966036779Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:36:23.991160354Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:36:23.991204272Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:36:23.991231667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:36:23.991252901Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:36:23.991262089Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:36:29.005306902Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:36:29.033493704Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:36:29.033599322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:36:29.055872032Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:36:29.055912856Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:36:29.055928472Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:36:29.055939865Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:36:29.055949474Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:36:34.074856174Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:36:34.104949944Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:36:34.105071997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:36:34.129334201Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:36:34.129380312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:36:34.129394566Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:36:34.129405417Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:36:34.129415658Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:36:39.147268248Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:36:39.176250197Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:36:39.176338975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:36:39.200998644Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:36:39.201041591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:36:39.201055504Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:36:39.201066958Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:36:39.20107742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:36:44.218289306Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:36:44.247908324Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:36:44.248025086Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:36:44.268384497Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:36:44.268577493Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:36:44.268596785Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:36:44.268655809Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:36:44.268666777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:36:49.289297293Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:36:49.321641768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:36:49.321763626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:36:49.345333387Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:36:49.34537351Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:36:49.345388277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:36:49.345400056Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:36:49.345409068Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:36:54.363087774Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:36:54.393922131Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:36:54.394030937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:36:54.415966393Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:36:54.416020946Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:36:54.416036848Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:36:54.416047075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:36:54.416055331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:36:59.432964315Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:36:59.461725118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:36:59.461812488Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:36:59.481912554Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:36:59.481965142Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:36:59.481979631Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:36:59.481990449Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:36:59.481998981Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:37:04.495140428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:37:04.524976573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:37:04.52510005Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:37:04.547994522Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:37:04.548036407Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:37:04.548051244Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:37:04.54806327Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:37:04.548071976Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:37:09.567272407Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:37:09.596392461Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:37:09.597042575Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:37:09.619635088Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:37:09.619688079Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:37:09.619703831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:37:09.619714864Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:37:09.61972331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:37:14.637275993Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:37:14.666537914Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:37:14.666651663Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:37:14.686669043Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:37:14.686714793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:37:14.686729447Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:37:14.686738984Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:37:14.686747605Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:37:19.707135085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:37:19.737793481Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:37:19.737893766Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:37:19.761327052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:37:19.761367209Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:37:19.76139272Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:37:19.761403011Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:37:19.761411499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:37:24.777185167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:37:24.806021015Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:37:24.806139697Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:37:24.830653219Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:37:24.831012636Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:37:24.831046911Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:37:24.831059507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:37:24.831070722Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:37:29.846998477Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:37:29.873537701Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:37:29.873664576Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:37:29.900828116Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:37:29.900886264Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:37:29.900901318Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:37:29.900912067Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:37:29.900922001Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:37:34.920277521Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:37:34.947872456Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:37:34.947970756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:37:34.972578689Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:37:34.972622119Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:37:34.972636201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:37:34.972646416Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:37:34.972655996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:37:39.987938996Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:37:40.025251951Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:37:40.025367847Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:37:40.046755425Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:37:40.046789344Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:37:40.0468031Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:37:40.046843177Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:37:40.046852158Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:37:45.062288236Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:37:45.091488506Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:37:45.091601651Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:37:45.11463023Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:37:45.114672549Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:37:45.114728728Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:37:45.114752742Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:37:45.114780053Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:37:50.136287366Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:37:50.164663194Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:37:50.164752989Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:37:50.18881199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:37:50.188874234Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:37:50.188889726Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:37:50.1888994Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:37:50.188908044Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:37:55.20939551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:37:55.24155496Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:37:55.241678572Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:37:55.261978979Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:37:55.262022642Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:37:55.262040138Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:37:55.262051555Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:37:55.262061705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:38:00.279774112Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:38:00.309385578Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:38:00.309513618Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:38:00.330181495Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:38:00.330222519Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:38:00.330248566Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:38:00.330259666Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:38:00.330268334Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:38:05.352125855Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:38:05.381136755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:38:05.381266743Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:38:05.405571714Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:38:05.40561347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:38:05.405627414Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:38:10.421538878Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:38:10.451258388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:38:10.451379538Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:38:10.471872684Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:38:10.471918958Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:38:10.471933545Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:38:10.471945262Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:38:10.471954488Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:38:15.48901715Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:38:15.517076174Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:38:15.517170511Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:38:15.541099517Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:38:15.541150132Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:38:15.541165289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:38:15.541173694Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:38:15.541180879Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:38:20.560510502Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:38:20.589131868Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:38:20.589225318Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:38:20.610956139Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:38:20.611013205Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:38:20.611028862Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:38:20.611038293Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:38:20.611046564Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:38:25.630140756Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:38:25.658261549Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:38:25.658357274Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:38:25.681861799Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:38:25.681902373Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:38:25.68195832Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:38:25.681970253Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:38:25.681978954Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:38:30.699334411Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:38:30.729015445Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:38:30.729130842Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:38:30.750692406Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:38:30.750736377Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:38:30.750750478Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:38:30.750761505Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:38:30.75077112Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:38:35.772564834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:38:35.803757136Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:38:35.803859409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:38:35.827354307Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:38:35.827419218Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:38:35.827433563Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:38:35.827460115Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:38:35.827471312Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:38:40.843945273Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:38:40.8745497Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:38:40.874640519Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:38:40.897889214Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:38:40.897933447Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:38:40.89794784Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:38:40.897959887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:38:40.897971568Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:38:45.913359212Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:38:45.942676126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:38:45.942791Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:38:45.966310228Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:38:45.966353508Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:38:45.966368417Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:38:45.96637916Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:38:45.966387254Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:38:50.98620478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:38:51.015755692Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:38:51.015849522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:38:51.039951499Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:38:51.039990887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:38:51.040005576Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:38:51.040016757Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:38:51.040027012Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:38:56.059623287Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:38:56.089813747Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:38:56.089901211Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:38:56.115296749Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:38:56.115340171Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:38:56.115356481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:38:56.115366974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:38:56.115375961Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:39:01.136378019Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:39:01.168659514Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:39:01.168766623Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:39:01.194836459Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:39:01.194880234Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:39:01.194897837Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:39:01.194934247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:39:01.194944078Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:39:06.213282942Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:39:06.244338342Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:39:06.244577701Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:39:06.271421474Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:39:06.27146119Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:39:06.271474587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:39:06.271485612Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:39:06.271495024Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:39:11.288369112Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:39:11.318779364Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:39:11.318869937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:39:11.341130905Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:39:11.341172522Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:39:11.341186477Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:39:11.341198535Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:39:11.341207807Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:39:16.361296643Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:39:16.390089704Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:39:16.390181594Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:39:16.413230699Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:39:16.413289934Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:39:16.413304232Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:39:16.413314401Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:39:16.413324467Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:39:21.436147015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:39:21.467011095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:39:21.467152804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:39:21.490887498Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:39:21.490928184Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:39:21.490941615Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:39:21.490953817Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:39:21.490963405Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:39:26.509207665Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:39:26.538320566Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:39:26.538419594Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:39:26.562173298Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:39:26.562213896Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:39:26.56222888Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:39:26.562275417Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:39:26.562284672Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:39:31.582506866Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:39:31.611175633Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:39:31.611313316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:39:31.634313607Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:39:31.634354522Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:39:31.634369254Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:39:31.634380507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:39:31.634389314Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:39:36.648423763Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:39:36.679140542Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:39:36.679290923Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:39:36.702395513Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:39:36.702436587Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:39:36.702487059Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:39:36.702498911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:39:36.702508293Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:39:41.721303004Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:39:41.750744047Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:39:41.75084619Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:39:41.774163992Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:39:41.774209414Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:39:41.774222758Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:39:41.774245631Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:39:41.774255273Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:39:46.794154897Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:39:46.824073733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:39:46.824196451Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:39:46.847210646Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:39:46.847273493Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:39:46.847288173Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:39:46.84729798Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:39:46.847306809Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:39:51.862526369Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:39:51.893901869Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:39:51.894013492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:39:51.918901742Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:39:51.918957781Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:39:51.918972166Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:39:51.918981906Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:39:51.918990535Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:39:56.938400857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:39:56.969438252Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:39:56.969556005Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:39:56.993534992Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:39:56.993580304Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:39:56.993594973Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:39:56.99360415Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:39:56.993613113Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:40:02.047512449Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:40:02.146659122Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:40:02.146796854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:40:02.236377247Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:40:02.236424051Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:40:02.236458962Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:40:02.236535419Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:40:02.236546141Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:40:07.249375898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:40:07.279410268Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:40:07.279520519Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:40:07.304360309Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:40:07.30440273Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:40:07.30441657Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:40:07.30442817Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:40:07.304566011Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:40:12.323275029Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:40:12.353214782Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:40:12.353322354Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:40:12.375732907Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:40:12.375773331Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:40:12.375787444Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:40:17.393571491Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:40:17.422976453Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:40:17.423106698Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:40:17.447207654Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:40:17.447268883Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:40:17.447284392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:40:17.447351217Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:40:17.447361743Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:40:22.471336334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:40:22.50199124Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:40:22.502115694Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:40:22.526321675Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:40:22.526364469Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:40:22.52638001Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:40:22.526392532Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:40:22.526401406Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:40:27.54170661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:40:27.5713527Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:40:27.571445479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:40:27.593329215Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:40:27.593374379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:40:27.593388888Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:40:27.593431025Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:40:27.593440187Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:40:32.609226337Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:40:32.638982844Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:40:32.63908829Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:40:32.662437792Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:40:32.662482696Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:40:32.662497381Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:40:32.662509288Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:40:32.662519337Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:40:37.676276569Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:40:37.707388347Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:40:37.707486809Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:40:37.731896036Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:40:37.73194034Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:40:37.731954653Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:40:37.73196595Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:40:37.731975898Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:40:42.753852714Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:40:42.783349815Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:40:42.783472108Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:40:42.806375716Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:40:42.806420873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:40:42.806435203Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:40:42.806446217Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:40:42.806456679Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:40:47.825936923Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:40:47.855278813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:40:47.855370095Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:40:47.881074235Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:40:47.88111509Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:40:47.881128776Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:40:47.881139683Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:40:47.881150019Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:40:52.898299188Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:40:52.927671737Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:40:52.927788062Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:40:52.951170256Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:40:52.951211673Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:40:52.951260498Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:40:52.951271643Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:40:52.951279583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:40:57.973277785Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:40:58.004211522Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:40:58.004337406Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:40:58.027318832Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:40:58.02736787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:40:58.027383771Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:40:58.027393671Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:40:58.02740402Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:41:03.046461581Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:41:03.076538779Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:41:03.076638334Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:41:03.102966777Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:41:08.117340565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:41:08.145505966Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:41:08.145586672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:41:08.171863894Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:41:08.171909028Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:41:08.171924642Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:41:08.171954042Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:41:08.171965664Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:41:13.187293074Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:41:13.217845267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:41:13.217974309Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:41:13.242927131Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:41:13.242967646Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:41:13.242981911Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:41:13.242991932Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:41:13.243001788Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:41:18.259323637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:41:18.288274452Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:41:18.288364979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:41:18.311851348Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:41:18.311896483Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:41:18.311947169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:41:18.311958656Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:41:18.31196701Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:41:23.330269809Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:41:23.360339111Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:41:23.360537892Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:41:23.384889337Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:41:23.384947819Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:41:28.398084073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:41:28.428032846Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:41:28.428150988Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:41:28.453023571Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:41:28.453069553Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:41:28.453083796Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:41:28.45310646Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:41:28.453115307Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:41:33.469281069Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:41:33.498129827Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:41:33.498228744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:41:33.521766686Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:41:33.521804791Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:41:33.521818432Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:41:33.521829097Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:41:33.521838515Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:41:38.539740438Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:41:38.568011042Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:41:38.568124176Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:41:38.592846715Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:41:38.592902453Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:41:38.592918001Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:41:38.592928339Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:41:38.592936689Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:41:43.607420962Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:41:43.635558171Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:41:43.635691859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:41:43.657123809Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:41:43.657169097Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:41:43.657183549Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:41:43.65719369Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:41:43.6572017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:41:48.673552512Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:41:48.701140778Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:41:48.701265292Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:41:48.724734861Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:41:48.724776155Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:41:48.72479117Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:41:48.724802004Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:41:53.744831237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:41:53.773470696Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:41:53.773561357Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:41:53.795205956Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:41:53.795260055Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:41:53.79527583Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:41:53.795287898Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:41:53.795296734Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:41:58.810086865Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:41:58.840712192Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:41:58.840834277Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:41:58.864400397Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:41:58.864577056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:41:58.86459717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:41:58.864607507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:41:58.864617769Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:42:03.882378307Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:42:03.91338751Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:42:03.913524844Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:42:03.935423453Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:42:03.93546797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:42:03.935482845Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:42:03.93549405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:42:03.935502572Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:42:08.952297667Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:42:08.982037557Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:42:08.982170356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:42:09.007226435Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:42:09.007295574Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:42:09.007310275Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:42:09.007321624Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:42:09.007331311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:42:14.024668271Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:42:14.053772679Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:42:14.053882067Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:42:14.077766156Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:42:14.078014047Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:42:14.078063769Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:42:14.078075637Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:42:14.078084608Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:42:19.096403583Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:42:19.127727429Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:42:19.127838085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:42:19.15115403Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:42:19.151197806Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:42:19.151211889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:42:19.151222136Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:42:24.169283429Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:42:24.199085057Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:42:24.199176284Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:42:24.222456521Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:42:24.222503401Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:42:24.222517183Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:42:24.222529678Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:42:24.222539156Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:42:29.239520141Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:42:29.268942153Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:42:29.269053766Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:42:29.292380273Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:42:29.292425428Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:42:29.292520386Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:42:29.292532933Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:42:29.292543446Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:42:34.30914937Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:42:34.335984139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:42:34.336099652Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:42:34.35628354Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:42:34.356329104Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:42:34.356343229Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:42:34.356355511Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:42:34.356365312Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:42:39.375059903Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:42:39.407197317Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:42:39.407323868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:42:39.434330602Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:42:39.434372245Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:42:39.434386259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:42:39.434397291Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:42:39.43440653Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:42:44.450792414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:42:44.481261489Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:42:44.481376495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:42:44.505993839Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:42:44.506038553Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:42:44.506055447Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:42:44.506068016Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:42:44.506079156Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:42:49.524546177Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:42:49.555761811Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:42:49.555851383Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:42:49.579360026Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:42:49.579399477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:42:49.579426987Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:42:49.579438149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:42:49.579447051Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:42:54.598933792Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:42:54.623162411Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:42:54.623264649Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:42:54.645206095Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:42:54.645260336Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:42:54.645275405Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:42:54.645287677Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:42:54.64529645Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:42:59.6624923Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:42:59.691613183Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:42:59.691714172Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:42:59.715645697Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:42:59.715686285Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:42:59.715699618Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:43:04.733948572Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:43:04.761799237Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:43:04.761904415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:43:04.782576741Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:43:04.782618427Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:43:04.782633553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:43:04.782645894Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:43:04.782655719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:43:09.800625622Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:43:09.827109428Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:43:09.827224625Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:43:09.852749372Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:43:09.852791432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:43:09.85280568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:43:09.852846527Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:43:09.852855191Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:43:14.871269437Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:43:14.899476305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:43:14.899581098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:43:14.919852011Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:43:14.919894584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:43:14.919908443Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:43:14.919920421Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:43:14.919929728Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:43:19.939592423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:43:19.969857682Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:43:19.969957526Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:43:19.995657959Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:43:19.995698471Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:43:19.995712147Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:43:19.995723349Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:43:19.995733528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:43:25.012970267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:43:25.041401389Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:43:25.041512964Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:43:25.064866726Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:43:25.064908691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:43:25.064922722Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:43:25.064935551Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:43:25.0649452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:43:30.08120211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:43:30.113402109Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:43:30.113527573Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:43:30.137047911Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:43:30.137097109Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:43:30.137112788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:43:30.13712338Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:43:30.13713112Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:43:35.15480667Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:43:35.186896078Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:43:35.187031693Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:43:35.209418569Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:43:35.209459698Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:43:35.20947304Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:43:35.209484462Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:43:35.209494375Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:43:40.224456423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:43:40.255924618Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:43:40.256013601Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:43:40.279495013Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:43:40.279537601Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:43:40.279573096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:43:40.279610401Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:43:40.279620645Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:43:45.294703193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:43:45.326260347Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:43:45.3263536Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:43:45.351678561Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:43:45.351716978Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:43:45.351732815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:43:45.351743037Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:43:45.351760829Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:43:50.372348492Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:43:50.401939699Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:43:50.402061197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:43:50.427088509Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:43:50.427150978Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:43:50.427188646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:43:50.427198589Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:43:50.427206874Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:43:55.44218073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:43:55.473053665Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:43:55.47316442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:43:55.494556149Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:43:55.49460271Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:43:55.494616786Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:43:55.494626515Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:43:55.494635271Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:44:00.511720964Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:44:00.542208176Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:44:00.542342647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:44:00.56351841Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:44:00.563572822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:44:05.578310044Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:44:05.610017295Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:44:05.610117191Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:44:05.632632589Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:44:05.632687395Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:44:05.632703815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:44:05.632714762Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:44:05.632723355Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:44:10.649624191Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:44:10.678568022Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:44:10.678676036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:44:10.705512104Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:44:10.705556925Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:44:10.705591616Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:44:10.705602034Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:44:10.705610506Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:44:15.724390819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:44:15.756012572Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:44:15.756142038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:44:15.782610052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:44:15.782655603Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:44:15.782669336Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:44:15.782680088Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:44:15.782690089Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:44:20.800270424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:44:20.829447082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:44:20.829541397Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:44:20.853629708Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:44:20.853679678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:44:20.85369733Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:44:20.853707257Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:44:20.853714915Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:44:25.869348216Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:44:25.900075419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:44:25.90017077Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:44:25.923349356Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:44:25.923389584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:44:25.923403086Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:44:25.923413828Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:44:25.923424053Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:44:30.94229101Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:44:30.973123619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:44:30.973248097Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:44:30.997497861Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:44:30.997544478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:44:30.997560582Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:44:30.997571405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:44:30.997579041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:44:36.01729944Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:44:36.04932321Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:44:36.049429367Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:44:36.070909101Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:44:36.070954607Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:44:36.07096807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:44:36.070978646Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:44:36.070988606Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:44:41.088401168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:44:41.118920327Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:44:41.119024193Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:44:41.144389614Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:44:41.144585569Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:44:41.144606353Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:44:41.144649788Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:44:41.144661154Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:44:46.163296611Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:44:46.192225136Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:44:46.192332498Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:44:46.218094207Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:44:46.218136438Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:44:46.218150064Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:44:46.218160514Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:44:46.218170844Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:44:51.234356915Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:44:51.263958525Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:44:51.264053526Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:44:51.292854517Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:44:51.292898731Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:44:51.292912732Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:44:51.292923421Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:44:51.292932009Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:44:56.31233545Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:44:56.339869588Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:44:56.339974055Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:44:56.363666949Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:44:56.363707195Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:44:56.363721995Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:44:56.363734058Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:44:56.363743873Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:45:01.389338377Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:45:01.431212025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:45:01.431325389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:45:01.492356568Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:45:01.492410001Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:45:01.49242599Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:45:01.492461309Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:45:01.492489642Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:45:06.512093966Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:45:06.543095114Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:45:06.543206817Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:45:06.564595249Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:45:06.564641326Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:45:06.564656998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:45:06.564668218Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:45:06.564678174Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:45:11.582287725Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:45:11.610774988Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:45:11.610891485Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:45:11.631413895Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:45:11.631475863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:45:11.631491129Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:45:11.631502189Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:45:11.631511182Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:45:16.651320093Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:45:16.682088211Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:45:16.682194825Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:45:16.70551791Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:45:16.705559108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:45:16.705572052Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:45:16.705585251Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:45:16.705594665Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:45:21.722881532Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:45:21.751984418Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:45:21.752092563Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:45:21.775261643Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:45:21.775310631Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:45:21.77532492Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:45:21.775334697Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:45:21.775345655Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:45:26.793875293Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:45:26.824491811Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:45:26.82502016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:45:26.849885237Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:45:26.84994116Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:45:26.849956647Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:45:26.849982006Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:45:26.850014841Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:45:31.866221183Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:45:31.895901675Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:45:31.896019252Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:45:31.916702735Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:45:31.916745414Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:45:31.916758791Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:45:31.916769937Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:45:31.916778119Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:45:36.935143908Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:45:36.963809828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:45:36.963919085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:45:36.986500544Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:45:36.986542487Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:45:36.986556226Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:45:36.98659436Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:45:36.98660346Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:45:42.004579478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:45:42.034864877Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:45:42.035022182Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:45:42.055903639Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:45:42.055953342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:45:42.055968706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:45:42.055978361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:45:42.05598681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:45:47.075338285Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:45:47.106178905Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:45:47.106294895Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:45:47.127262882Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:45:47.127324108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:45:47.127338634Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:45:47.127348757Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:45:47.127357814Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:45:52.145802595Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:45:52.17782429Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:45:52.177932869Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:45:52.203885065Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:45:52.204102416Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:45:52.204122283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:45:52.204142713Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:45:52.204151577Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:45:57.219290705Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:45:57.248524827Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:45:57.248652256Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:45:57.268631908Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:45:57.268675171Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:45:57.268690028Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:45:57.268702615Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:45:57.268712713Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:46:02.285778467Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:46:02.315720845Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:46:02.315841793Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:46:02.345478021Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:46:02.345522655Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:46:02.345537135Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:46:02.345548752Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:46:02.345558661Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:46:07.363013346Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:46:07.393541789Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:46:07.393634823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:46:07.41867971Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:46:07.418727685Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:46:07.418741838Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:46:07.418752249Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:46:07.418762961Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:46:12.438377318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:46:12.469682025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:46:12.46979899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:46:12.491836886Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:46:12.49187661Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:46:12.491891835Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:46:12.491904598Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:46:12.491914255Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:46:17.50946145Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:46:17.538040979Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:46:17.538131798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:46:17.559162548Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:46:17.55920654Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:46:17.559221602Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:46:17.559232866Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:46:17.55925282Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:46:22.575894898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:46:22.607146282Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:46:22.607259931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:46:22.632424106Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:46:22.632565198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:46:22.632582558Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:46:22.632613853Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:46:22.63262443Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:46:27.651188713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:46:27.679330191Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:46:27.679418229Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:46:27.702066901Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:46:27.702110414Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:46:27.702124588Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:46:27.702136391Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:46:27.70214555Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:46:32.719303353Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:46:32.747832306Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:46:32.747922542Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:46:32.772374617Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:46:32.772423852Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:46:32.772520869Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:46:32.772534432Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:46:32.772544684Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:46:37.789233179Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:46:37.819143002Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:46:37.819269162Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:46:37.843193647Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:46:37.84326622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:46:37.843280585Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:46:37.843290805Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:46:37.84329947Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:46:42.861805796Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:46:42.890351928Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:46:42.890462232Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:46:42.914308223Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:46:42.914350411Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:46:42.914364864Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:46:42.914375759Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:46:42.914385465Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:46:47.930614153Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:46:47.958123016Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:46:47.958293456Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:46:47.980390146Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:46:47.980435937Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:46:47.980517553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:46:47.98052917Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:46:47.98053775Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:46:53.000322761Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:46:53.031002957Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:46:53.031115975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:46:53.053890007Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:46:53.053937298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:46:53.053972062Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:46:53.053982833Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:46:53.053991643Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:46:58.074155027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:46:58.105643728Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:46:58.105786789Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:46:58.12889866Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:46:58.128940015Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:46:58.12895388Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:46:58.128966984Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:46:58.128977191Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:47:03.144113956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:47:03.172989254Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:47:03.173095297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:47:03.200336862Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:47:03.200380895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:47:03.200405986Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:47:03.20041652Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:47:03.200425041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:47:08.217298087Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:47:08.246870366Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:47:08.246969496Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:47:08.270650471Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:47:08.270696933Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:47:08.270713062Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:47:08.270724666Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:47:08.270734434Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:47:13.284287844Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:47:13.315546105Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:47:13.315674363Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:47:13.341892946Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:47:13.341952855Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:47:13.341967073Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:47:13.3419789Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:47:13.341987741Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:47:18.368277699Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:47:18.394464212Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:47:18.394573253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:47:18.415688692Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:47:18.415731934Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:47:18.415746222Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:47:18.415770437Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:47:18.415779762Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:47:23.432280365Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:47:23.46143884Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:47:23.461532928Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:47:23.486485984Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:47:23.486554348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:47:23.486569938Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:47:23.486578875Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:47:23.486587769Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:47:28.502213083Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:47:28.530254507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:47:28.530358574Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:47:28.554723997Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:47:28.554767306Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:47:28.554780264Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:47:28.554791485Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:47:28.554801009Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:47:33.570609438Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:47:33.601386507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:47:33.601477257Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:47:33.624288366Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:47:33.624327708Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:47:33.624358024Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:47:33.624390482Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:47:33.624399479Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:47:38.640629574Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:47:38.671615905Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:47:38.67174373Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:47:38.693450856Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:47:38.693535571Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:47:38.69355242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:47:38.693564628Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:47:38.693573909Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:47:43.705927392Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:47:43.736562857Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:47:43.73668233Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:47:43.758667591Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:47:43.758707674Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:47:43.758722014Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:47:43.758734886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:47:43.758744523Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:47:48.77957228Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:47:48.811147874Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:47:48.811326143Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:47:48.832189828Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:47:48.832228985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:47:48.832256413Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:47:48.832266414Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:47:53.847657749Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:47:53.87508277Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:47:53.875175501Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:47:53.897871987Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:47:53.897915366Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:47:53.897928656Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:47:53.897938893Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:47:53.897949155Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:47:58.914928602Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:47:58.944886316Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:47:58.944998214Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:47:58.966255845Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:47:58.966299548Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:47:58.96631464Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:47:58.966326632Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:47:58.966336119Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:48:03.981937025Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:48:04.01040515Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:48:04.010550108Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:48:04.038217903Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:48:04.038271841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:48:04.038287704Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:48:04.038299354Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:48:04.038308446Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:48:09.055538325Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:48:09.084888459Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:48:09.084983234Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:48:09.107337586Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:48:09.107377638Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:48:09.1073907Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:48:09.107426367Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:48:09.107435741Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:48:14.122322296Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:48:14.15374751Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:48:14.153856332Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:48:14.174150303Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:48:14.174190647Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:48:14.174204681Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:48:14.174215874Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:48:14.174225027Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:48:19.197587674Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:48:19.227075782Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:48:19.227203038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:48:19.251560454Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:48:19.25160779Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:48:19.251648835Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:48:19.251661036Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:48:19.251669507Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:48:24.268306798Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:48:24.297054143Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:48:24.297166285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:48:24.321598926Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:48:24.321644365Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:48:24.321658003Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:48:24.321670281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:48:24.321693013Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:48:29.337547213Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:48:29.368578062Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:48:29.368671373Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:48:29.389085908Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:48:29.389150804Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:48:29.38916656Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:48:29.389175566Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:48:29.389184366Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:48:34.405466061Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:48:34.434474992Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:48:34.434599752Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:48:34.454024225Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:48:34.454063279Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:48:34.454076795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:48:34.454088841Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:48:34.454097113Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:48:39.472805102Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:48:39.502877855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:48:39.502973458Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:48:39.526993143Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:48:39.527039201Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:48:39.527053803Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:48:39.527064948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:48:39.527074518Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:48:44.546447879Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:48:44.576061528Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:48:44.576163395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:48:44.602879872Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:48:44.602922738Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:48:44.602980014Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:48:44.602991982Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:48:44.603001052Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:48:49.624848347Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:48:49.656607904Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:48:49.656723714Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:48:49.678154925Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:48:49.67820821Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:48:49.678225466Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:48:49.678258592Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:48:49.678268054Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:48:54.695151064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:48:54.725359829Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:48:54.725454158Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:48:54.747551989Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:48:54.747592449Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:48:54.747624007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:48:54.747634201Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:48:54.74764294Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:48:59.764283975Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:48:59.793616663Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:48:59.793746142Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:48:59.817475147Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:48:59.817518025Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:48:59.817531807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:48:59.817543576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:48:59.817553315Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:49:04.841525002Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:49:04.876987357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:49:04.877101553Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:49:04.904136263Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:49:04.904180193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:49:04.904192814Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:49:04.904202983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:49:04.904211698Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:49:09.923287498Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:49:09.952166253Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:49:09.952306449Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:49:09.976263995Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:49:09.976305974Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:49:09.976320752Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:49:09.976332085Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:49:09.976342008Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:49:14.992231339Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:49:15.022684731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:49:15.022790177Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:49:15.046502957Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:49:15.046550744Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:49:15.046564196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:49:15.046575905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:49:15.046585891Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:49:20.063350539Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:49:20.092045761Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:49:20.092135614Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:49:20.114352221Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:49:20.114397196Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:49:20.114411222Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:49:20.114423694Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:49:20.114433033Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:49:25.132619934Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:49:25.16439938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:49:25.164674854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:49:25.187462142Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:49:25.187500166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:49:25.187514081Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:49:25.187524618Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:49:25.187532761Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:49:30.208785627Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:49:30.2376664Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:49:30.237783689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:49:30.260958055Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:49:30.261000735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:49:30.261032612Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:49:30.261043123Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:49:30.261051621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:49:35.280287364Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:49:35.309039916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:49:35.309161597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:49:35.329109269Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:49:35.32915545Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:49:35.329169215Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:49:35.329179591Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:49:35.329189879Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:49:40.34527337Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:49:40.375404222Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:49:40.375579659Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:49:40.398735035Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:49:40.398791932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:49:40.398805784Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:49:40.398814786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:49:40.398823079Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:49:45.414319959Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:49:45.444174224Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:49:45.44430627Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:49:45.47165019Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:49:45.471691148Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:49:45.471704709Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:49:45.471715913Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:49:45.471725617Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:49:50.48781101Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:49:50.519040069Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:49:50.519170677Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:49:50.540200166Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:49:50.54027616Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:49:50.540291889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:49:50.540302534Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:49:50.540310689Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:49:55.556673932Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:49:55.585178228Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:49:55.585308881Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:49:55.610218097Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:49:55.610273093Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:49:55.610287933Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:49:55.61029868Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:49:55.610307603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:50:00.626393193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:50:00.653435936Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:50:00.653550549Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:50:00.67471882Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:50:00.674760795Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:50:00.674776474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:50:00.67479752Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:50:00.674807382Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:50:05.690285886Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:50:05.720082179Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:50:05.720185141Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:50:05.748893077Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:50:05.74893626Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:50:05.748977091Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:50:05.748987952Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:50:05.748996416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:50:10.769300755Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:50:10.799171421Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:50:10.799307145Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:50:10.823444668Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:50:10.823503522Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:50:10.823518375Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:50:10.823528507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:50:10.823536924Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:50:15.842614599Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:50:15.871894119Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:50:15.87201862Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:50:15.89369749Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:50:15.893741796Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:50:15.893755765Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:50:15.893766421Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:50:15.893776199Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:50:20.911297572Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:50:20.939829056Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:50:20.939922241Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:50:20.963892624Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:50:20.963953305Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:50:20.963970642Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:50:20.963981949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:50:20.963991015Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:50:25.983999346Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:50:26.015470265Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:50:26.015560103Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:50:26.038962938Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:50:26.039002465Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:50:26.039016339Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:50:26.039049974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:50:26.039059199Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:50:31.058542255Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:50:31.087938738Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:50:31.088050604Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:50:31.106804795Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:50:31.106866877Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:50:31.106881619Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:50:31.106891321Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:50:31.10689934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:50:36.124971192Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:50:36.155499476Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:50:36.155617901Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:50:36.180930264Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:50:36.18097135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:50:36.181086921Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:50:36.181099922Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:50:36.181108552Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:50:41.200285505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:50:41.230464121Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:50:41.23055517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:50:41.250078938Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:50:41.250118997Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:50:41.250133546Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:50:41.250153043Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:50:41.250162196Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:50:46.268560283Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:50:46.298477201Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:50:46.29859129Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:50:46.319017902Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:50:46.319292463Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:50:46.319313915Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:50:46.319324063Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:50:46.319332848Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:50:51.335095389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:50:51.364762346Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:50:51.364854048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:50:51.384278344Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:50:51.384333611Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:50:51.384349269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:50:51.384359643Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:50:51.384368303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:50:56.400628122Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:50:56.432378697Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:50:56.432573913Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:50:56.458093457Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:50:56.45814491Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:50:56.458161458Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:51:01.476364079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:51:01.509769787Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:51:01.509885188Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:51:01.534438522Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:51:06.551287959Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:51:06.581800299Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:51:06.581920694Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:51:06.606216711Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:51:06.606282965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:51:06.606299576Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:51:06.606311049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:51:06.606334237Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:51:11.626521658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:51:11.657845175Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:51:11.657951764Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:51:11.682097851Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:51:11.682140214Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:51:11.682153717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:51:11.682165859Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:51:11.682175337Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:51:16.699962331Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:51:16.731263103Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:51:16.731390365Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:51:16.757116806Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:51:16.757159031Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:51:16.757174457Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:51:16.757185748Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:51:16.757195247Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:51:21.779286598Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:51:21.809287941Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:51:21.809378758Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:51:21.831449278Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:51:21.831491433Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:51:26.849320668Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:51:26.876667417Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:51:26.876755147Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:51:26.903718071Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:51:26.903770845Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:51:26.903785909Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:51:26.903796847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:51:26.903807414Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:51:31.919508157Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:51:31.947637494Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:51:31.947756229Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:51:31.969149185Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:51:31.969211412Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:51:31.969226722Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:51:31.96931662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:51:31.96932877Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:51:36.989104338Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:51:37.020340044Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:51:37.020534942Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:51:37.042131522Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:51:37.042179517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:51:37.042195092Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:51:37.04239096Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T02:51:37.042812205Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:51:37.04283416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:51:42.062551414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:51:42.091714463Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:51:42.091806698Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:51:42.117954013Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:51:42.118004437Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:51:42.118019039Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:51:42.118030341Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:51:42.118039368Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:51:47.136330811Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:51:47.166690185Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:51:47.166787069Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:51:47.18738509Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:51:47.187426989Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:51:47.187440129Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:51:47.187460049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:51:47.187469246Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:51:52.206121262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:51:52.236649174Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:51:52.236760645Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:51:52.259743102Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:51:52.259784387Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:51:52.259798703Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:51:52.259810122Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:51:52.25981936Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:51:57.281110809Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:51:57.308697493Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:51:57.308801744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:51:57.329398212Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:51:57.329438714Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:51:57.329451873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:51:57.329477688Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:51:57.329486614Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:52:02.346493155Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:52:02.375796626Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:52:02.375906803Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:52:02.403036205Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:52:02.403085879Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:52:02.403100807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:52:02.40311132Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:52:02.403120784Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:52:07.419306618Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:52:07.450112298Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:52:07.450198425Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:52:07.474391572Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:52:07.474435027Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:52:07.474449963Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:52:07.474460492Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:52:07.474468801Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:52:12.497308344Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:52:12.527140293Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:52:12.527251697Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:52:12.552062185Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:52:12.552105471Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:52:17.574306031Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:52:17.605262685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:52:17.605362774Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:52:17.626381495Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:52:17.626440568Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:52:17.626454662Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:52:17.626464826Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:52:17.626473028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:52:22.647634168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:52:22.67784237Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:52:22.677937815Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:52:22.698961887Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:52:22.69900433Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:52:22.69901822Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:52:22.699028927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:52:22.699038918Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:52:27.718419978Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:52:27.748924231Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:52:27.749049596Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:52:27.773543916Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:52:27.773585794Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:52:27.77360132Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:52:27.77361269Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:52:27.773622693Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:52:32.787432605Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:52:32.818262972Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:52:32.818351755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:52:32.843077551Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:52:32.843121751Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:52:32.843136361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:52:32.84318692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:52:32.843197685Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:52:37.85739413Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:52:37.888416325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:52:37.888606287Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:52:37.914753682Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:52:37.914811345Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:52:37.914826085Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:52:37.914837045Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:52:37.914845166Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:52:42.930539753Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:52:42.958121448Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:52:42.958230051Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:52:42.980710421Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:52:42.980752968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:52:42.980767078Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:52:42.980777655Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:52:42.980786404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:52:47.997008473Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:52:48.028266949Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:52:48.028388885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:52:48.050442643Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:52:48.050501582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:52:48.050517081Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:52:48.050527505Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:52:48.050536791Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:52:53.071267736Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:52:53.10347809Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:52:53.103596724Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:52:53.12943675Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:52:53.129481462Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:52:53.129496169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:52:53.129507824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:52:53.129516696Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:52:58.145433579Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:52:58.176606451Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:52:58.176733745Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:52:58.201610599Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:52:58.20165358Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:52:58.201667296Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:52:58.201678296Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:53:03.218275502Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:53:03.245799876Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:53:03.245892745Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:53:03.268961451Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:53:03.269013842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:53:03.269028507Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:53:03.269040308Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:53:03.269051151Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:53:08.285296183Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:53:08.315418136Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:53:08.315529038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:53:08.340961017Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:53:08.341021885Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:53:08.341037Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:53:08.341047483Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:53:08.341055984Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:53:13.358293015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:53:13.388079932Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:53:13.38817777Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:53:13.410067732Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:53:13.410125193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:53:13.41014028Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:53:13.41019963Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:53:13.410210609Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:53:18.430283386Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:53:18.459865368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:53:18.459962591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:53:18.482967007Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:53:18.483010613Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:53:18.483024453Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:53:23.499292721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:53:23.529876665Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:53:23.529987599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:53:23.553146065Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:53:23.553187112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:53:23.553202675Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:53:23.553229562Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:53:23.553251898Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:53:28.565105001Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:53:28.595943894Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:53:28.596062018Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:53:28.620401914Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:53:28.620574339Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:53:28.620594306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:53:28.620605117Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:53:28.620615006Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:53:33.634608795Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:53:33.663929475Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:53:33.664049237Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:53:33.690479699Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:53:33.690523368Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:53:33.69053812Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:53:33.690549088Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:53:33.690558544Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:53:38.708706743Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:53:38.736720095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:53:38.736817795Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:53:38.757929404Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:53:38.757970886Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:53:38.757986854Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:53:38.758022048Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:53:38.75803207Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:53:43.774342664Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:53:43.804316462Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:53:43.804527997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:53:43.828795882Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:53:43.828838371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:53:43.828852397Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:53:43.828864872Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:53:43.828874554Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:53:48.848369307Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:53:48.879380679Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:53:48.879881237Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:53:48.899770488Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:53:48.89981098Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:53:48.8998249Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:53:48.899835597Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:53:48.899844406Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:53:53.912179377Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:53:53.94250223Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:53:53.942606218Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:53:53.968998987Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:53:53.969037181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:53:53.969099908Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:53:53.969110775Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:53:53.96921423Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:53:58.98585493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:53:59.015531384Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:53:59.015646028Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:53:59.039554396Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:53:59.039595937Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:53:59.039610588Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:53:59.039622374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:53:59.039632725Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:54:04.056091405Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:54:04.084104285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:54:04.084198437Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:54:04.107531081Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:54:04.10757255Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:54:04.107587091Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:54:04.107598098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:54:04.107607405Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:54:09.124291267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:54:09.153555226Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:54:09.15367156Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:54:09.178764911Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:54:09.178810985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:54:09.17882598Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:54:09.178835725Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:54:09.178842951Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:54:14.193352503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:54:14.22439162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:54:14.224581779Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:54:14.248392194Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:54:14.248575476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:54:14.24862049Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:54:14.248632608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:54:14.248641498Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:54:19.265286701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:54:19.296151385Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:54:19.296293543Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:54:19.322635336Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:54:19.32267756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:54:19.322691794Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:54:19.322705511Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:54:19.322715897Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:54:24.340285025Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:54:24.368794655Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:54:24.368896118Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:54:24.392287261Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:54:24.392329123Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:54:24.392343324Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:54:24.392354429Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:54:24.392364123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:54:29.409834621Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:54:29.43868884Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:54:29.438785042Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:54:29.459639316Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:54:29.459680828Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:54:29.459695436Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:54:29.45970682Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:54:29.459716083Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:54:34.477299939Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:54:34.507691051Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:54:34.507802755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:54:34.534192506Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:54:34.534245131Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:54:34.534259622Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:54:34.534270696Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:54:34.534279184Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:54:39.550394048Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:54:39.579764265Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:54:39.579870872Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:54:39.599615566Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:54:39.599660419Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:54:39.599675169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:54:39.5996856Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:54:39.599695533Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:54:44.612031186Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:54:44.644125138Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:54:44.644257818Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:54:44.669296391Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:54:44.669339865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:54:44.669365865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:54:49.688352796Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:54:49.720818983Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:54:49.720929002Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:54:49.744885189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:54:49.744947359Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:54:49.74496402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:54:49.745002379Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:54:49.745012281Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:54:54.760800615Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:54:54.791093759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:54:54.791185874Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:54:54.817629407Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:54:54.817671137Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:54:54.817686915Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:54:54.817697807Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:54:54.817709302Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:54:59.832770154Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:54:59.865067492Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:54:59.865186664Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:54:59.890444789Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:54:59.890486644Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:54:59.890500718Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:54:59.890512601Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:54:59.890522715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:55:04.908101706Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:55:04.93617794Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:55:04.936290835Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:55:04.958381627Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:55:04.958426893Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:55:04.958441765Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:55:04.958452987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:55:04.958460435Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:55:09.979523095Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:55:10.00825687Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:55:10.008373239Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:55:10.027402153Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:55:10.027448083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:55:10.027461987Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:55:10.027472528Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:55:10.02748149Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:55:15.04628922Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:55:15.076116693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:55:15.076230951Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:55:15.099043492Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:55:15.099090416Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:55:15.099104394Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:55:15.099114733Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:55:15.099123232Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:55:20.119571702Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:55:20.150979877Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:55:20.151079027Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:55:20.170886229Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:55:20.170929151Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:55:20.170944406Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:55:20.17097543Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:55:20.170985561Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:55:25.188273895Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:55:25.217906222Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:55:25.218016387Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:55:25.243930535Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:55:25.243978457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:55:25.243993573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:55:25.244004091Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:55:25.244011177Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:55:30.261571223Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:55:30.29271946Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:55:30.292830263Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:55:30.317629229Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:55:30.317689334Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:55:30.317707098Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:55:30.31771772Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:55:30.317726751Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:55:35.33377429Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:55:35.363922494Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:55:35.364013564Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:55:35.389637994Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:55:35.38969251Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:55:35.38970624Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:55:35.38971625Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:55:35.389724486Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:55:40.413268597Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:55:40.442051412Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:55:40.442152854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:55:40.465483177Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:55:40.465527461Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:55:40.465544574Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:55:40.465555093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:55:40.465565103Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:55:45.482282526Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:55:45.510723494Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:55:45.510850946Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:55:45.535541722Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:55:50.554049697Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:55:50.581721245Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:55:50.581838977Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:55:50.605562626Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:55:50.605606899Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:55:50.605643523Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:55:50.605675731Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:55:50.605685222Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:55:55.624271109Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:55:55.652288327Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:55:55.652405257Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:55:55.677984638Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:55:55.678469591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:55:55.678715287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:55:55.678973906Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T02:55:55.679173818Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T02:55:55.678881414Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:55:55.679390658Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:56:00.698786816Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:56:00.730325855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:56:00.7304515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:56:00.755311075Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:56:00.755357459Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:56:00.755371128Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:56:00.755393835Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:56:00.755403273Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:56:05.771306578Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:56:05.801283453Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:56:05.801367841Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:56:05.82370201Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:56:05.82375969Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:56:05.823774702Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:56:05.823785051Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:56:05.823793918Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:56:10.842814888Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:56:10.872590157Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:56:10.872684402Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:56:10.899083523Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:56:10.899127018Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:56:10.899142091Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:56:10.89918373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:56:10.89919309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:56:15.91647643Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:56:15.944600442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:56:15.944725014Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:56:15.967735303Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:56:15.967779649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:56:15.967794058Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:56:15.967804714Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:56:15.967814628Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:56:20.989937252Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:56:21.019696958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:56:21.019790952Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:56:21.041091438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:56:21.041133496Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:56:21.041148241Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:56:21.041159167Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:56:21.041169667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:56:26.058157302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:56:26.091317171Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:56:26.09141652Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:56:26.114480476Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:56:26.114521776Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:56:26.11453569Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:56:26.11454662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:56:26.114555551Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:56:31.130144848Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:56:31.159806177Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:56:31.15989557Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:56:31.183214518Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:56:31.183274935Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:56:31.183290689Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:56:31.183300373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:56:31.183308918Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:56:36.201125284Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:56:36.232100774Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:56:36.232211253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:56:36.252739509Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:56:36.252792277Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:56:36.252806935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:56:36.252818092Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:56:36.252828987Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:56:41.277280352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:56:41.306821269Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:56:41.30693395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:56:41.333376206Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:56:41.333421595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:56:41.333435577Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:56:41.333446399Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:56:41.333455983Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:56:46.349067758Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:56:46.378519649Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:56:46.37863041Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:56:46.404040414Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:56:46.404110548Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:56:46.404125908Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:56:46.404134927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:56:46.404144204Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:56:51.428296187Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:56:51.457571103Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:56:51.457661418Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:56:51.478406791Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:56:51.478583367Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:56:51.478614101Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:56:51.478626809Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:56:51.478637867Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:56:56.496408551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:56:56.525510585Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:56:56.525624858Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:56:56.549211903Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:56:56.549286678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:56:56.549301783Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:56:56.549310837Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:56:56.549319701Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:57:01.594313166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:57:01.652888162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:57:01.653144401Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:57:01.693532273Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:57:01.693576976Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:57:01.693592949Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:57:01.693605181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:57:01.693614421Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:57:06.713284469Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:57:06.740378604Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:57:06.740618367Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:57:06.762352199Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:57:06.762396421Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:57:06.762412411Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:57:06.762423619Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:57:06.762433627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:57:11.783985256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:57:11.812378462Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:57:11.812624691Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:57:11.83601954Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:57:11.836059097Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:57:11.836074679Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:57:11.836085137Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:57:11.836094145Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:57:16.851327129Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:57:16.881932163Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:57:16.882034909Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:57:16.905581299Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:57:16.905627771Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:57:16.905642088Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:57:16.905653904Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:57:16.905663856Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:57:21.922292979Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:57:21.953225633Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:57:21.953393129Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:57:21.974362468Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:57:21.974407754Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:57:21.974422019Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:57:21.974434473Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:57:21.974444795Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:57:26.99017075Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:57:27.020866985Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:57:27.020983503Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:57:27.045736007Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:57:27.045778355Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:57:27.045791982Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:57:27.045803338Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:57:27.045813182Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:57:32.06129888Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:57:32.090184044Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:57:32.090305787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:57:32.112603391Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:57:32.112655256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:57:32.112670797Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:57:32.112681286Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:57:32.112689694Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:57:37.12752962Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:57:37.157964671Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:57:37.158088135Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:57:37.178617372Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:57:37.178665018Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:57:37.17868022Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:57:37.178691254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:57:37.178699926Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:57:42.19737164Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:57:42.228722089Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:57:42.228835645Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:57:42.253162974Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:57:42.253208114Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:57:42.253222674Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:57:42.253232399Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:57:42.253254964Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:57:47.268293277Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:57:47.296612936Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:57:47.296717007Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:57:47.321284368Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:57:47.321326935Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:57:47.321342086Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:57:47.321360216Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:57:47.321369043Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:57:52.340883123Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:57:52.370652244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:57:52.370764203Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:57:52.394918617Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:57:52.395970625Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:57:52.395997353Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:57:52.396010883Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:57:52.396022147Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:57:57.417657533Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:57:57.44621831Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:57:57.446332097Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:57:57.467919126Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:57:57.467962733Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:57:57.467977473Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:57:57.467999978Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:57:57.468010005Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:58:02.486199863Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:58:02.519229739Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:58:02.519361682Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:58:02.539419646Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:58:02.539465227Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:58:02.539480725Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:58:02.539491568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:58:02.539500276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:58:07.554300529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:58:07.583539146Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:58:07.583656432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:58:07.604695787Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:58:07.604751767Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:58:07.604767222Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:58:07.604778559Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:58:07.604786763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:58:12.627443948Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:58:12.658070623Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:58:12.658173481Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:58:12.683195221Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:58:12.68325567Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:58:12.683272012Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:58:12.683283959Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:58:12.683292576Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:58:17.70230436Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:58:17.731390779Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:58:17.731506293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:58:17.752827852Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:58:17.75287101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:58:17.752885309Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:58:17.75289629Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:58:17.75290622Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:58:22.76930428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:58:22.799361362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:58:22.799484011Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:58:22.819808445Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:58:22.819849686Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:58:22.819864692Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:58:22.819874391Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:58:22.819883489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:58:27.83703922Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:58:27.864738751Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:58:27.864832691Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:58:27.887201969Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:58:27.887254068Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:58:27.887268082Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:58:27.887281899Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:58:27.887292939Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:58:32.903710822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:58:32.931866923Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:58:32.931977771Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:58:32.955006024Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:58:32.95504999Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:58:32.95506564Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:58:32.955075191Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:58:32.955085232Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:58:37.970082756Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:58:38.002800134Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:58:38.002931517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:58:38.027003203Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:58:38.027064893Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:58:38.027081216Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:58:38.027091658Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:58:38.027100629Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:58:43.046165674Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:58:43.07697799Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:58:43.077090328Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:58:43.1048422Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:58:43.10489966Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:58:43.104916107Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:58:43.104926865Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:58:43.104945181Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:58:48.127082703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:58:48.157419488Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:58:48.157531139Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:58:48.178176429Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:58:48.178259194Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:58:48.178274199Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:58:48.178283331Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:58:48.178525784Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:58:53.193746671Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:58:53.223998398Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:58:53.224113311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:58:53.247859616Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:58:53.247911129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:58:53.247926529Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:58:53.247937176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:58:53.247945522Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:58:58.271058083Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:58:58.299828197Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:58:58.299944885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:58:58.322403984Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:58:58.322448717Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:58:58.322462849Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:58:58.322474214Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:58:58.322483591Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:59:03.337273809Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:59:03.366407999Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:59:03.366519605Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:59:03.390785254Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:59:03.390835664Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:59:03.390849786Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:59:03.390888097Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:59:03.390897879Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:59:08.408301563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:59:08.439451572Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:59:08.439572893Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:59:08.461809878Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:59:08.46186782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:59:08.461882487Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:59:08.461892245Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:59:08.461900968Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:59:13.479444831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:59:13.510368483Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:59:13.510481726Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:59:13.535715886Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:59:13.535759815Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:59:13.535774434Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:59:13.535785235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:59:13.535795697Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:59:18.551486575Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:59:18.581208366Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:59:18.581311482Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:59:18.603459134Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:59:18.60352097Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:59:18.603535954Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:59:18.603600622Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:59:18.603610794Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:59:23.621496137Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:59:23.651397461Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:59:23.651521639Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:59:23.677090832Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:59:23.677136158Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:59:23.677151058Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:59:23.677161157Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:59:23.677170359Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:59:28.691168237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:59:28.721587179Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:59:28.721695232Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:59:28.745742528Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:59:28.745788476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:59:28.745803699Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:59:28.746066264Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:59:28.746084883Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:59:33.759107044Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:59:33.786866099Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:59:33.786957936Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:59:33.810886052Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:59:33.810927597Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:59:33.810941494Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:59:33.810977113Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:59:33.810986869Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:59:38.827284637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:59:38.856984089Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:59:38.857082879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:59:38.878327838Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:59:38.879393553Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:59:38.879419809Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:59:38.879432839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:59:38.879444055Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:59:43.896724452Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:59:43.927729589Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:59:43.927840456Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:59:43.951257532Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:59:43.951313303Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:59:43.951326993Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:59:43.951337562Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:59:43.951346355Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:59:48.967636034Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:59:48.998584268Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:59:48.99870356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:59:49.021076032Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:59:49.021118363Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:59:49.021131893Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:59:49.021142337Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:59:54.035459718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:59:54.066568539Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:59:54.066679859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:59:54.090383392Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:59:54.090437414Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:59:54.090452947Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:59:54.090463214Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:59:54.090471935Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T02:59:59.1058881Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T02:59:59.135622509Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T02:59:59.135733513Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T02:59:59.159082544Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T02:59:59.159128121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T02:59:59.159142771Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T02:59:59.159153747Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T02:59:59.159163772Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:00:04.186734363Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:00:04.283029799Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:00:04.283286738Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:00:04.309413502Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:00:04.309460492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:00:04.30947637Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:00:04.309489152Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:00:04.309498427Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:00:09.326272683Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:00:09.357457932Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:00:09.35757445Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:00:09.380599771Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:00:09.380641853Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:00:09.38065766Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:00:09.380670126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:00:09.380679737Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:00:14.397121315Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:00:14.425932456Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:00:14.426037962Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:00:14.448208117Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:00:14.448263568Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:00:14.44827725Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:00:14.448288157Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:00:14.448296868Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:00:19.467293473Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:00:19.498087784Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:00:19.498180561Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:00:19.521724314Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:00:19.521768309Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:00:19.521783715Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:00:19.521793886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:00:19.521803607Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:00:24.540651182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:00:24.567277475Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:00:24.567411039Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:00:24.594548746Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:00:24.594601896Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:00:24.594617368Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:00:24.594626896Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:00:24.59463505Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:00:29.610473823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:00:29.64060543Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:00:29.640698641Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:00:29.661906789Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:00:29.661951567Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:00:29.661967914Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:00:29.66199561Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:00:29.662005435Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:00:34.681541303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:00:34.710833507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:00:34.710939829Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:00:34.737131261Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:00:34.737183236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:00:34.737198182Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:00:34.737208662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:00:34.737217622Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:00:39.755368257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:00:39.787073544Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:00:39.787195217Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:00:39.809556111Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:00:39.809601425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:00:39.809615635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:00:39.809626254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:00:39.809636161Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:00:44.826117424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:00:44.855064395Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:00:44.855158419Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:00:44.882786265Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:00:44.882832831Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:00:44.882847235Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:00:44.882857901Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:00:44.882865208Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:00:49.903329272Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:00:49.934229829Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:00:49.934388203Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:00:49.95932694Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:00:49.959374606Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:00:49.959388767Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:00:49.95939729Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:00:49.959404707Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:00:54.981230002Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:00:55.011266423Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:00:55.011373754Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:00:55.034158317Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:00:55.034200786Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:00:55.034215828Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:00:55.034227628Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:00:55.034249862Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:01:00.07034826Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:01:00.162117192Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:01:00.162260962Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:01:00.254183708Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:01:00.254227011Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:01:00.254256895Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:01:00.254267927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:01:00.254276841Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:01:05.272407264Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:01:05.3019798Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:01:05.302099861Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:01:05.328888558Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:01:05.328929687Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:01:05.328945492Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:01:05.328965941Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:01:05.328975221Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:01:10.349059292Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:01:10.378157992Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:01:10.378281325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:01:10.401941428Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:01:10.40200943Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:01:10.402025772Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:01:10.402036393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:01:10.402062122Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:01:15.41822318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:01:15.44751851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:01:15.44766477Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:01:15.47304121Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:01:15.473088628Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:01:15.473105221Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:01:15.473133385Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:01:15.473145371Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:01:20.488185381Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:01:20.518500167Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:01:20.518595022Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:01:20.543831051Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:01:20.543930142Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:01:20.543973113Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:01:20.543983581Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:01:20.543992967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:01:25.559781443Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:01:25.587915067Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:01:25.588029231Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:01:25.610581734Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:01:25.6106231Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:01:25.610638195Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:01:25.610674065Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:01:25.610683957Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:01:30.627468139Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:01:30.658740978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:01:30.658835433Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:01:30.681569406Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:01:30.681616297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:01:30.681629773Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:01:30.681641443Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:01:30.681650801Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:01:35.697653257Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:01:35.727265974Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:01:35.727390424Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:01:35.747908814Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:01:35.74795109Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:01:35.747964592Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:01:35.747975458Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:01:35.747984503Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:01:40.764314694Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:01:40.79483142Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:01:40.79495317Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:01:40.820822451Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:01:40.820881102Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:01:40.820896369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:01:40.82090709Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:01:40.820916394Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:01:45.836190466Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:01:45.867338592Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:01:45.86743879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:01:45.888603591Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:01:45.888645959Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:01:45.888678007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:01:45.888689098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:01:45.888697331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:01:50.907129405Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:01:50.937609105Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:01:50.937710096Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:01:50.962275071Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:01:50.962315606Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:01:50.96232966Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:01:50.962342312Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:01:50.962351569Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:01:55.980573227Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:01:56.009794104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:01:56.00991666Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:01:56.033059461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:01:56.033098962Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:02:01.05208035Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:02:01.080230304Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:02:01.080344074Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:02:01.102348761Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:02:01.102387811Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:02:01.102400785Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:02:01.10241242Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:02:01.102422862Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:02:06.120281169Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:02:06.150655511Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:02:06.150764291Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:02:06.170444802Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:02:06.170490874Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:02:06.170504917Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:02:06.17051484Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:02:06.170525425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:02:11.187159566Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:02:11.21546319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:02:11.215549707Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:02:11.237046819Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:02:11.237102878Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:02:11.237117979Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:02:11.237127549Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:02:11.237136708Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:02:16.254254785Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:02:16.284188156Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:02:16.28430754Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:02:16.304955352Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:02:16.304997016Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:02:16.305026748Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:02:16.305061074Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:02:16.305070513Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:02:21.324282883Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:02:21.352126042Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:02:21.352247642Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:02:21.372729432Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:02:21.372768763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:02:21.372782613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:02:21.372794505Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:02:21.372804936Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:02:26.389275393Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:02:26.419592674Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:02:26.419681338Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:02:26.440043713Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:02:26.440086772Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:02:26.440124985Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:02:26.440136177Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:02:26.440145945Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:02:31.458967441Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:02:31.48805086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:02:31.488155483Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:02:31.507927822Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:02:31.507974897Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:02:31.507989585Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:02:31.507999758Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:02:31.508008065Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:02:36.528121832Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:02:36.556056036Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:02:36.556150078Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:02:36.580197143Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:02:36.58024899Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:02:36.580263613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:02:36.580275472Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:02:36.580283865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:02:41.597852414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:02:41.62857733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:02:41.6286905Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:02:41.654769974Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:02:41.654811463Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:02:41.654825862Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:02:41.654837461Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:02:41.654847978Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:02:46.672948597Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:02:46.703695453Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:02:46.7038109Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:02:46.729882833Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:02:46.729930235Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:02:46.72994314Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:02:46.729954015Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:02:46.729962729Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:02:51.746294704Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:02:51.777229458Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:02:51.777335133Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:02:51.797352445Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:02:51.797392744Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:02:51.797406689Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:02:51.797418648Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:02:51.797427676Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:02:56.813392532Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:02:56.8440912Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:02:56.844179962Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:02:56.870682039Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:02:56.870728109Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:02:56.870741347Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:02:56.870751498Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:02:56.870760203Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:03:01.890266757Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:03:01.920227134Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:03:01.920347493Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:03:01.944911283Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:03:01.944964742Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:03:01.944980581Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:03:01.944990413Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:03:01.944999176Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:03:06.965074657Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:03:06.99759784Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:03:06.997684902Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:03:07.021180573Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:03:07.021224622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:03:07.021253102Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:03:07.021265624Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:03:07.021274987Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:03:12.034062952Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:03:12.065952921Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:03:12.066046328Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:03:12.088856156Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:03:12.088901531Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:03:12.088918079Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:03:12.088930733Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:03:12.088939921Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:03:17.104310777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:03:17.136837169Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:03:17.1369603Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:03:17.161742516Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:03:17.161791595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:03:17.161805598Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:03:17.161819354Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:03:17.161828759Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:03:22.179759538Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:03:22.21176453Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:03:22.2118782Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:03:22.234057045Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:03:22.23413058Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:03:22.23414504Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:03:22.23417863Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:03:22.234187523Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:03:27.255231412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:03:27.284579829Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:03:27.284663389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:03:27.309385043Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:03:27.309432642Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:03:27.309448846Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:03:27.309459252Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:03:27.309467152Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:03:32.325762679Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:03:32.355201843Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:03:32.355331296Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:03:32.375441984Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:03:32.375499256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:03:32.375514094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:03:32.375524542Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:03:32.375534017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:03:37.391815172Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:03:37.419250586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:03:37.419357731Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:03:37.44241357Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:03:37.442455505Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:03:37.442469849Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:03:37.442481786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:03:37.442492221Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:03:42.460695791Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:03:42.491007898Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:03:42.491102763Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:03:42.517473177Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:03:42.517516613Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:03:42.517531266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:03:42.51754411Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:03:42.51755372Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:03:47.538302181Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:03:47.565610562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:03:47.56572382Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:03:47.589616907Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:03:47.589659344Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:03:47.589672896Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:03:47.589686083Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:03:47.589695577Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:03:52.609012103Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:03:52.638748846Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:03:52.638857427Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:03:52.663003535Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:03:52.663063419Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:03:52.663079709Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:03:52.663089319Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:03:52.663097701Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:03:57.683563284Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:03:57.713732647Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:03:57.713829293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:03:57.737217204Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:03:57.737278679Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:03:57.737295436Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:03:57.737331446Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:03:57.737340927Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:04:02.76128083Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:04:02.793108554Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:04:02.79322554Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:04:02.814457202Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:04:02.814512888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:04:02.814528551Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:04:02.814539914Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:04:02.814547995Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:04:07.830518535Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:04:07.860646388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:04:07.860742058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:04:07.886380665Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:04:07.886429204Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:04:07.886445137Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:04:07.886463982Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:04:07.886474776Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:04:12.908367312Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:04:12.937971021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:04:12.93808109Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:04:12.958583962Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:04:12.958643277Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:04:12.958658292Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:04:12.958667561Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:04:12.958675583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:04:17.974917977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:04:18.005797585Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:04:18.005904878Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:04:18.030264967Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:04:18.030307969Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:04:18.030322785Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:04:18.030350107Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:04:18.030358724Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:04:23.052284438Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:04:23.079702993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:04:23.079803677Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:04:23.104848572Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:04:23.104904812Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:04:23.10491967Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:04:23.104928968Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:04:23.104940723Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:04:28.122619978Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:04:28.150051492Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:04:28.150142588Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:04:28.17144859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:04:28.171489082Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:04:28.171503198Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:04:28.171515256Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:04:28.171524409Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:04:33.187495611Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:04:33.217983919Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:04:33.218099619Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:04:33.240399966Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:04:33.240552698Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:04:33.240569434Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:04:33.240582728Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:04:33.240592055Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:04:38.261260808Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:04:38.290416576Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:04:38.290544346Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:04:38.314738596Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:04:38.314780582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:04:38.314794769Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:04:38.314806986Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:04:38.314815998Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:04:43.33393339Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:04:43.364187312Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:04:43.364294151Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:04:43.387711715Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:04:43.387756252Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:04:43.38777009Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:04:43.387781567Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:04:43.387791289Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:04:48.405295599Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:04:48.434038955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:04:48.434131198Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:04:48.45880754Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:04:48.458847148Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:04:48.458861378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:04:48.45887307Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:04:48.458881602Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:04:53.474150666Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:04:53.504092549Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:04:53.504184561Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:04:53.521835814Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:04:53.521878181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:04:53.52189179Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:04:53.521902033Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:04:53.521910279Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:04:58.537297997Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:04:58.566993956Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:04:58.56709271Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:04:58.590353947Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:04:58.590396631Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:04:58.590411159Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:04:58.59042315Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:04:58.590432043Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:05:03.606543494Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:05:03.63694218Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:05:03.637051014Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:05:03.662089193Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:05:03.662131678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:05:03.662146219Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:05:03.662158509Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:05:03.662168187Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:05:08.679192033Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:05:08.708008254Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:05:08.70812009Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:05:08.731096477Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:05:08.731140614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:05:08.73115513Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:05:08.731166739Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:05:08.73117532Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:05:13.749491683Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:05:13.778392671Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:05:13.778497156Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:05:13.801675037Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:05:13.801723558Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:05:13.801737591Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:05:13.801762682Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:05:13.801771996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:05:18.819665292Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:05:18.84909666Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:05:18.849179973Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:05:18.86945525Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:05:18.869495786Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:05:18.869510178Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:05:18.86955181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:05:18.869561897Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:05:23.884873892Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:05:23.914363678Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:05:23.914473275Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:05:23.936823974Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:05:23.936870824Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:05:23.936886108Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:05:23.936897845Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:05:23.936908796Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:05:28.950530125Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:05:28.980010209Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:05:28.980127535Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:05:29.001953028Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:05:29.002002691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:05:29.002018271Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:05:29.002029779Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:05:29.002037482Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:05:34.01653117Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:05:34.044277059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:05:34.044360366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:05:34.067258994Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:05:34.067319409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:05:34.067334086Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:05:34.067387804Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:05:34.067397528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:05:39.083043423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:05:39.112954754Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:05:39.113082104Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:05:39.135778395Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:05:39.135819439Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:05:39.135832589Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:05:39.135842488Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:05:39.13585131Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:05:44.151409184Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:05:44.18096638Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:05:44.181061704Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:05:44.203854897Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:05:44.203920154Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:05:44.203935095Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:05:44.203944639Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:05:44.20395267Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:05:49.221353927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:05:49.252663478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:05:49.252776098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:05:49.274975591Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:05:49.275018013Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:05:49.275032819Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:05:49.275042761Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:05:49.275051657Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:05:54.293286995Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:05:54.321365819Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:05:54.321474554Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:05:54.341882492Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:05:54.341927698Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:05:54.341942085Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:05:54.341953583Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:05:54.341962705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:05:59.358351573Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:05:59.387640924Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:05:59.387750992Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:05:59.415942162Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:05:59.415985888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:05:59.416000997Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:05:59.416038131Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:05:59.416046937Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:06:04.433174039Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:06:04.462161001Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:06:04.462279068Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:06:04.485147596Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:06:04.485189602Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:06:04.485204537Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:06:04.485216976Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:06:04.485225761Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:06:09.502585779Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:06:09.530086467Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:06:09.530199832Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:06:09.555344962Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:06:09.555386476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:06:09.555400488Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:06:09.555412496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:06:09.5554214Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:06:14.571430629Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:06:14.598442292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:06:14.5985366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:06:14.619145417Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:06:14.61919809Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:06:14.619213499Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:06:14.619224026Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:06:14.619326963Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:06:19.642051671Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:06:19.672127991Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:06:19.672259459Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:06:19.694929449Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:06:19.694979903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:06:19.694996109Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:06:19.695005097Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:06:19.695013484Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:06:24.709852284Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:06:24.738805228Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:06:24.738909532Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:06:24.762398352Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:06:24.762444969Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:06:24.762459357Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:06:24.762468833Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:06:24.762479458Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:06:29.781587522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:06:29.810822596Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:06:29.810923015Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:06:29.834062269Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:06:29.8341181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:06:29.834133343Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:06:29.834143148Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:06:29.834153176Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:06:34.85260668Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:06:34.882930444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:06:34.883047134Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:06:34.903876909Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:06:34.903917573Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:06:34.903931845Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:06:34.903961832Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:06:34.903971038Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:06:39.920545956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:06:39.948632667Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:06:39.948728396Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:06:39.970425388Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:06:39.970464273Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:06:39.970478127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:06:44.988291059Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:06:45.017860754Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:06:45.017954415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:06:45.040828417Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:06:45.040888422Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:06:45.040924483Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:06:45.040945335Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:06:45.040954592Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:06:50.057815424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:06:50.089432536Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:06:50.089568421Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:06:50.112988258Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:06:50.11303544Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:06:50.113051432Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:06:50.113061734Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:06:50.113071711Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:06:55.130298167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:06:55.160565085Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:06:55.160676109Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:06:55.181545092Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:06:55.181588128Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:06:55.181602521Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:06:55.181613331Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:06:55.181622418Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:07:00.202231448Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:07:00.249124647Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:07:00.249284242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:07:00.279262874Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:07:00.279308556Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:07:00.279321285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:07:00.279332713Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:07:00.279342634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:07:05.298277795Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:07:05.327143225Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:07:05.327343184Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:07:05.348071572Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:07:05.348111207Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:07:05.348124764Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:07:05.348135891Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:07:05.348145403Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:07:10.366295282Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:07:10.397014576Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:07:10.397123157Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:07:10.417733327Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:07:10.417772653Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:07:10.417787452Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:07:10.417798902Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:07:10.417808675Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:07:15.433772685Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:07:15.462096663Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:07:15.462202692Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:07:15.483551993Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:07:15.483596096Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:07:15.483609948Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:07:15.483622395Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:07:15.483631473Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:07:20.504232989Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:07:20.532826635Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:07:20.53296522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:07:20.555337262Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:07:20.55538943Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:07:25.575290974Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:07:25.604985219Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:07:25.605101351Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:07:25.629080912Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:07:25.629125041Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:07:25.629140221Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:07:25.629152688Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:07:25.629162723Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:07:30.646297664Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:07:30.673335586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:07:30.673437059Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:07:30.696849349Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:07:30.696889668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:07:30.696904271Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:07:30.696935897Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:07:30.696951848Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:07:35.713267638Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:07:35.742000616Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:07:35.742097082Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:07:35.764095055Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:07:35.76415514Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:07:35.764169573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:07:35.764179115Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:07:35.764187282Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:07:40.783851141Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:07:40.814446739Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:07:40.814571049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:07:40.835592219Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:07:40.835637866Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:07:40.835651641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:07:40.835661569Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:07:40.83567155Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:07:45.85602503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:07:45.8862782Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:07:45.886394292Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:07:45.906045311Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:07:45.906102501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:07:45.906116954Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:07:45.906166161Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:07:45.906175777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:07:50.925716997Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:07:50.955270724Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:07:50.955372205Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:07:50.979077444Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:07:50.979126446Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:07:50.979141712Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:07:50.979153359Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:07:50.979162182Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:07:55.999386419Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:07:56.026829285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:07:56.026935492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:07:56.050955436Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:07:56.051001559Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:07:56.05101695Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:07:56.05102818Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:07:56.05103793Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:08:01.068275879Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:08:01.098340698Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:08:01.098432881Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:08:01.118450639Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:08:01.118499353Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:08:01.118514809Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:08:01.118525323Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:08:01.118535416Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:08:06.135227898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:08:06.164385912Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:08:06.164614759Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:08:06.187134988Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:08:06.187174224Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:08:06.187188395Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:08:06.187198615Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:08:06.187207018Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:08:11.204776461Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:08:11.233389002Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:08:11.233492771Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:08:11.25695306Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:08:11.256996299Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:08:11.25701171Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:08:11.25702357Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:08:11.257033404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:08:16.275861289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:08:16.303313908Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:08:16.303412136Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:08:16.323696745Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:08:16.323738406Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:08:16.323751969Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:08:16.323763001Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:08:16.3237721Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:08:21.342397482Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:08:21.369190922Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:08:21.369324772Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:08:21.390386949Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:08:21.390427826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:08:21.390441933Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:08:21.390453236Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:08:21.390463527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:08:26.408264693Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:08:26.437656941Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:08:26.437790037Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:08:26.462806506Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:08:26.462851235Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:08:26.462867658Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:08:26.462878633Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:08:26.462888993Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:08:31.481864731Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:08:31.511098821Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:08:31.511188538Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:08:31.532604542Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:08:31.532645925Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:08:31.532659163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:08:31.532679509Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:08:31.532688408Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:08:36.551336038Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:08:36.581121707Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:08:36.581247475Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:08:36.602211098Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:08:36.602268298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:08:36.602283942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:08:36.602293489Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:08:36.602302445Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:08:41.622482774Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:08:41.652729106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:08:41.652841306Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:08:41.673422688Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:08:41.673483081Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:08:41.673497404Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:08:41.673509608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:08:41.673518241Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:08:46.688722844Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:08:46.718459786Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:08:46.718593833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:08:46.73853739Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:08:46.73857663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:08:46.738591308Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:08:46.738627337Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:08:46.738636543Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:08:51.753718726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:08:51.784105104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:08:51.784197868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:08:51.812103707Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:08:51.81214517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:08:51.812199573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:08:51.812210779Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:08:51.812220218Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:08:56.828954483Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:08:56.860590598Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:08:56.860690131Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:08:56.88198137Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:08:56.882040686Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:08:56.882055853Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:08:56.882065847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:08:56.882073721Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:09:01.924640603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:09:01.962211392Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:09:01.962367326Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:09:01.987357207Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:09:01.98739895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:09:01.987413675Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:09:01.987424171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:09:07.009277144Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:09:07.039020106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:09:07.039146725Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:09:07.062933969Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:09:07.06300093Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:09:07.063017036Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:09:07.063028063Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:09:07.063036612Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:09:12.086272309Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:09:12.116014605Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:09:12.11610853Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:09:12.137984101Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:09:12.138029446Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:09:12.138043445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:09:12.138054491Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:09:12.138064003Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:09:17.158298204Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:09:17.189197165Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:09:17.189331003Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:09:17.213106404Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:09:17.213150117Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:09:17.213165704Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:09:17.213209643Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:09:17.213218791Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:09:22.233317432Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:09:22.263450905Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:09:22.263562964Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:09:22.289918697Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:09:22.289960656Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:09:22.289974831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:09:22.289986954Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:09:22.289997605Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:09:27.309461317Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:09:27.339709752Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:09:27.339820408Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:09:27.363443579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:09:27.363487701Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:09:27.363503473Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:09:27.363515037Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:09:27.363523855Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:09:32.382297305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:09:32.413262575Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:09:32.413355822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:09:32.436154544Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:09:32.436207621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:09:32.436224213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:09:32.436264014Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:09:32.436273683Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:09:37.451275408Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:09:37.479490955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:09:37.479620232Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:09:37.502998166Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:09:37.503042729Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:09:37.503056569Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:09:37.503068056Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:09:37.503086077Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:09:42.522291717Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:09:42.551361293Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:09:42.551730613Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:09:42.575838001Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:09:42.575882234Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:09:42.575895783Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:09:42.575906624Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:09:42.575917182Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:09:47.595466636Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:09:47.625275465Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:09:47.625367835Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:09:47.648708933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:09:47.648752272Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:09:47.648769028Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:09:47.648780216Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:09:47.64878966Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:09:52.666773196Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:09:52.696624493Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:09:52.696715785Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:09:52.720284881Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:09:52.720354732Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:09:52.720368763Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:09:52.72037865Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:09:52.720387088Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:09:57.73912151Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:09:57.768820561Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:09:57.768946524Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:09:57.790291952Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:09:57.790333528Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:09:57.790347258Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:09:57.790358622Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:09:57.79036776Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:10:02.806281752Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:10:02.837262638Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:10:02.837362556Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:10:02.861290048Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:10:02.861331576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:10:02.861345866Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:10:02.861358265Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:10:02.86136746Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:10:07.87584083Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:10:07.906730712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:10:07.906832389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:10:07.928260351Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:10:07.928301365Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:10:07.92831602Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:10:07.92832657Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:10:07.928337481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:10:12.948606068Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:10:12.976183624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:10:12.976300973Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:10:13.000423266Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:10:13.000534285Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:10:13.00055113Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:10:13.00057536Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:10:13.000585152Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:10:18.020527985Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:10:18.051463834Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:10:18.051600454Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:10:18.07221975Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:10:18.072290297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:10:18.072304892Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:10:18.072314626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:10:18.072323603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:10:23.095671064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:10:23.126677178Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:10:23.126795539Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:10:23.148626505Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:10:23.148682984Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:10:23.148697719Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:10:23.14870956Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:10:23.148718767Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:10:28.163467614Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:10:28.193481448Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:10:28.193591012Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:10:28.21745658Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:10:28.217514214Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:10:28.217529277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:10:28.217540032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:10:28.217549113Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:10:33.231823377Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:10:33.262090408Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:10:33.262206661Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:10:33.289084996Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:10:33.289151803Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:10:33.28916646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:10:33.289178432Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:10:33.28918979Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:10:38.30427266Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:10:38.334551221Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:10:38.33463465Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:10:38.357570158Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:10:38.357631102Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:10:38.357646942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:10:38.35765725Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:10:38.357665772Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:10:43.372083299Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:10:43.401753638Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:10:43.401848881Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:10:43.428965351Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:10:43.429009975Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:10:43.429041639Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:10:43.429052338Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:10:43.429061201Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:10:48.442191584Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:10:48.47368282Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:10:48.473831507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:10:48.496414811Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:10:48.496560147Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:10:48.496576232Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:10:48.496618059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:10:48.496628096Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:10:53.510163028Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:10:53.539592778Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:10:53.539692456Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:10:53.562908851Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:10:53.562950669Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:10:53.562964932Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:10:53.562976771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:10:53.562985781Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:10:58.576538212Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:10:58.604906257Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:10:58.605022452Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:10:58.626130896Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:10:58.626176771Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:10:58.62619255Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:10:58.626204434Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:10:58.626214524Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:11:03.643682939Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:11:03.675038245Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:11:03.67514436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:11:03.698657522Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:11:03.698703692Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:11:03.698717706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:11:03.698727521Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:11:03.698736175Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:11:08.713028325Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:11:08.744177039Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:11:08.744351349Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:11:08.765273618Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:11:08.765321757Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:11:08.765337154Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:11:08.765349298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:11:08.765359722Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:11:13.780660186Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:11:13.810868175Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:11:13.810970023Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:11:13.835496543Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:11:13.835538526Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:11:13.835554125Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:11:13.835590197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:11:13.835601161Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:11:18.854950838Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:11:18.886422516Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:11:18.886513658Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:11:18.909761206Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:11:18.909818039Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:11:18.909834158Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:11:18.909867918Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:11:18.90988643Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:11:23.928182937Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:11:23.959562778Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:11:23.959673266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:11:23.98201627Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:11:23.982059675Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:11:23.982075363Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:11:23.982086494Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:11:23.982095185Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:11:28.998284001Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:11:29.027942542Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:11:29.028061268Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:11:29.052606002Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:11:29.052648346Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:11:29.052664093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:11:29.052696229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:11:29.052705795Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:11:34.067390825Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:11:34.098053966Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:11:34.098157595Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:11:34.1237408Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:11:34.123780228Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:11:34.123794386Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:11:34.123805565Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:11:34.123816054Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:11:39.14095144Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:11:39.17025877Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:11:39.17036004Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:11:39.193011809Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:11:39.193114804Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:11:39.193132317Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:11:39.193143309Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:11:39.193153198Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:11:44.209189732Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:11:44.238096681Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:11:44.238210739Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:11:44.262931404Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:11:44.26297556Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:11:44.26298908Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:11:44.263000138Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:11:44.263020472Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:11:49.283316706Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:11:49.31272644Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:11:49.312836232Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:11:49.334170622Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:11:49.33421256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:11:49.334226218Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:11:49.334248396Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:11:49.334257476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:11:54.351768868Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:11:54.377358398Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:11:54.377580676Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:11:54.402371644Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:11:54.402416453Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:11:54.402429029Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:11:54.402438377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:11:54.40244651Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:11:59.419141274Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:11:59.448623541Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:11:59.44871504Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:11:59.4703753Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:11:59.47041775Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:11:59.47043255Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:11:59.470472232Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:11:59.470480988Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:12:04.487212267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:12:04.516952236Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:12:04.517050754Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:12:04.543514142Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:12:04.543577154Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:12:04.543594336Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:12:04.543603659Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:12:04.543612933Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:12:09.560758512Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:12:09.59046596Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:12:09.590555359Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:12:09.615087987Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:12:09.615132241Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:12:09.615146874Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:12:09.615158665Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:12:09.615168994Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:12:14.634656988Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:12:14.664041855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:12:14.664155197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:12:14.688723991Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:12:14.688769253Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:12:14.688783558Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:12:14.688814627Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:12:14.688824301Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:12:19.70469093Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:12:19.733117567Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:12:19.733228255Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:12:19.75510993Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:12:19.755151831Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:12:19.755166452Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:12:19.755178671Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:12:19.755187919Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:12:24.773282153Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:12:24.803963844Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:12:24.80407577Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:12:24.828934655Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:12:24.828977889Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:12:24.829018472Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:12:24.829029369Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:12:24.829038028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:12:29.845286911Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:12:29.874493426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:12:29.874597409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:12:29.896328049Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:12:29.896383606Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:12:29.896399734Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:12:29.896409693Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:12:29.896418406Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:12:34.912223393Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:12:34.942981839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:12:34.943079363Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:12:34.966210736Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:12:34.966267088Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:12:34.966282034Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:12:34.966291599Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:12:34.966300056Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:12:39.983227454Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:12:40.013695999Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:12:40.013820774Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:12:40.03813861Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:12:40.038201942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:12:40.038216819Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:12:40.038226742Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:12:40.038310345Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:12:45.052737312Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:12:45.083517443Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:12:45.083616914Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:12:45.111519642Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:12:45.111566462Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:12:45.111606295Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:12:45.111616402Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:12:45.111625098Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:12:50.129202092Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:12:50.160157838Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:12:50.160281597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:12:50.180655968Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:12:50.180696887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:12:50.180710623Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:12:50.180735479Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:12:50.180744932Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:12:55.194837131Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:12:55.224819318Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:12:55.224947684Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:12:55.245549036Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:12:55.245590267Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:12:55.245604047Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:12:55.245615037Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:12:55.245623733Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:13:00.263951763Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:13:00.294094535Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:13:00.294187345Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:13:00.31471727Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:13:05.334604697Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:13:05.364322303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:13:05.364413886Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:13:05.389521403Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:13:05.389566152Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:13:05.389613237Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:13:05.389623737Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:13:05.389632399Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:13:10.406315708Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:13:10.435028911Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:13:10.435124317Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:13:10.456639571Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:13:10.456695166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:13:10.456709175Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:13:10.456720808Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:13:10.456731162Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:13:15.471532737Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:13:15.500971007Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:13:15.501082894Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:13:15.520953854Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:13:15.520996957Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:13:15.52101124Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:13:15.521046893Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:13:15.521056941Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:13:20.541603466Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:13:20.571324319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:13:20.571443134Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:13:20.594431288Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:13:20.59449016Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:13:20.594506646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:13:20.594517061Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:13:20.594525565Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:13:25.612111652Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:13:25.639172899Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:13:25.639304539Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:13:25.662985536Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:13:25.663031286Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:13:25.66304608Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:13:25.663056803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:13:25.663066766Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:13:30.679191006Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:13:30.709348748Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:13:30.709434091Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:13:30.734306011Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:13:30.734346697Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:13:30.734360842Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:13:30.734372708Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:13:30.734381639Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:13:35.754507837Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:13:35.784341999Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:13:35.784599306Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:13:35.810447358Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:13:35.810503118Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:13:35.810518946Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:13:35.810529846Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:13:35.810538755Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:13:40.824870778Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:13:40.854488555Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:13:40.854602878Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:13:40.878296365Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:13:40.878343251Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:13:40.878360625Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:13:40.87837367Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:13:40.878384745Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:13:45.896734412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:13:45.926993839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:13:45.9271041Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:13:45.948937605Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:13:45.948978796Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:13:45.949031612Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:13:45.949043412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:13:45.949051763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:13:50.966231374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:13:50.995514724Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:13:50.995626133Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:13:51.01745306Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:13:51.017516518Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:13:51.017532487Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:13:51.017543249Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:13:51.017551715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:13:56.034625288Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:13:56.064046921Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:13:56.064173016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:13:56.088064816Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:13:56.088106902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:13:56.088120806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:13:56.088140839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:13:56.088149395Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:14:01.12050076Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:14:01.23998419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:14:01.2401134Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:14:01.272648225Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:14:01.272706549Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:14:01.272721993Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:14:01.272732653Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:14:01.272741498Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:14:06.289160291Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:14:06.319629729Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:14:06.319760904Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:14:06.343983442Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:14:06.344025109Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:14:06.344038959Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:14:06.344050093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:14:06.344060374Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:14:11.359444258Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:14:11.389467126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:14:11.389564043Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:14:11.409189386Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:14:11.409230499Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:14:11.409270873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:14:11.409280835Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:14:11.409289689Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:14:16.425462001Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:14:16.455223751Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:14:16.455353811Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:14:16.47794963Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:14:16.477995821Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:14:16.478010998Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:14:16.478024164Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:14:16.478033458Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:14:21.49729554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:14:21.526725451Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:14:21.526821551Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:14:21.546860449Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:14:21.546903333Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:14:21.546917999Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:14:21.546929893Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:14:21.546940346Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:14:26.564273889Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:14:26.593895225Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:14:26.594004399Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:14:26.62190204Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:14:26.621944785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:14:26.621959719Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:14:26.621971583Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:14:26.621981579Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:14:31.63959453Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:14:31.669147312Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:14:31.669276581Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:14:31.690412477Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:14:31.690456651Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:14:31.690472208Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:14:31.690482934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:14:31.690492189Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:14:36.709262054Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:14:36.73825872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:14:36.738349974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:14:36.762436243Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:14:36.762479577Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:14:36.76249414Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:14:36.762504271Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:14:36.762515558Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:14:41.780914319Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:14:41.808801487Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:14:41.808907054Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:14:41.83471189Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:14:41.834753755Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:14:41.834768174Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:14:41.834780996Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:14:41.834789721Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:14:46.854008903Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:14:46.884102222Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:14:46.884225912Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:14:46.907170021Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:14:46.907218496Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:14:46.907260989Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:14:46.907272163Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:14:46.907280402Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:14:51.927265822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:14:51.957263645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:14:51.957357846Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:14:51.983290899Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:14:51.985284585Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:14:51.985307882Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:14:51.985316645Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:14:51.985323755Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:14:57.003860549Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:14:57.034573009Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:14:57.034666544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:14:57.055018222Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:14:57.055061233Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:14:57.055076036Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:14:57.055112366Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:14:57.055121258Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:15:02.083882498Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:15:02.133158519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:15:02.133286396Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:15:02.205678053Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:15:02.205760885Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:15:02.205778127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:15:02.205975696Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:15:02.205990254Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:15:07.222924551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:15:07.252883419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:15:07.253008Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:15:07.281569245Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:15:07.281615232Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:15:07.281629562Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:15:07.28164173Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:15:07.281650782Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:15:12.300021144Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:15:12.328721201Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:15:12.32883736Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:15:12.352776631Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:15:12.352843239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:15:12.352859503Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:15:12.352935232Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:15:12.352946414Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:15:17.372344112Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:15:17.401291955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:15:17.401400448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:15:17.423922681Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:15:17.423962105Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:15:17.42397669Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:15:17.42399509Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:15:17.424004273Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:15:22.445871163Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:15:22.475838104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:15:22.475941317Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:15:22.499064968Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:15:22.499106294Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:15:22.499120601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:15:22.499132105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:15:22.49914233Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:15:27.520288061Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:15:27.547498334Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:15:27.547589621Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:15:27.568228426Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:15:27.568303876Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:15:32.584000606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:15:32.613675123Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:15:32.613771578Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:15:32.638780066Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:15:32.638821075Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:15:32.638834473Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:15:32.638846019Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:15:32.638855238Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:15:37.654841452Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:15:37.684975893Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:15:37.685092148Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:15:37.710385167Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:15:37.710443022Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:15:37.710458659Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:15:37.710502474Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:15:37.71051218Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:15:42.729855405Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:15:42.759812573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:15:42.759939205Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:15:42.78099757Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:15:42.781038428Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:15:42.781054122Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:15:42.781065129Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:15:42.7810755Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:15:47.800306685Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:15:47.827374414Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:15:47.827484517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:15:47.853545093Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:15:47.853585537Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:15:47.853600635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:15:47.853611747Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:15:47.853621807Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:15:52.877088829Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:15:52.903262899Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:15:52.903371626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:15:52.925913657Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:15:52.925954441Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:15:52.925967658Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:15:52.925977353Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:15:52.925987484Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:15:57.946279965Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:15:57.977274815Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:15:57.977357571Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:15:58.001953631Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:15:58.001997125Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:15:58.00201161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:15:58.002023438Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:15:58.002032502Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:16:03.022002936Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:16:03.054965374Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:16:03.055094745Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:16:03.079743758Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:16:03.079786843Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:16:03.079801831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:16:03.079814017Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:16:03.079823143Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:16:08.096842723Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:16:08.126769432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:16:08.126860814Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:16:08.149527579Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:16:08.149569961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:16:08.149583811Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:16:08.149619599Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:16:08.149629971Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:16:13.163626026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:16:13.195087995Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:16:13.19518008Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:16:13.217690872Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:16:13.217763006Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:16:13.217777426Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:16:13.217812469Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:16:13.21783688Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:16:18.235007776Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:16:18.265427234Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:16:18.265539817Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:16:18.290091282Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:16:18.290134367Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:16:18.290147832Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:16:18.290157955Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:16:18.290168712Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:16:23.30694567Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:16:23.337902575Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:16:23.337990194Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:16:23.363607463Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:16:23.363656279Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:16:23.363670353Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:16:23.363681379Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:16:23.36369209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:16:28.384083461Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:16:28.41337559Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:16:28.413471489Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:16:28.435226158Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:16:28.435282516Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:16:28.435297148Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:16:28.435307486Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:16:28.435316746Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:16:33.451078051Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:16:33.480128683Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:16:33.480274764Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:16:33.503039205Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:16:33.503080199Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:16:33.503094632Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:16:33.503107682Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:16:33.503117711Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:16:38.519925193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:16:38.549426137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:16:38.549572991Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:16:38.572997404Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:16:38.573039974Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:16:38.573053882Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:16:38.573065323Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:16:38.573075539Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:16:43.590323791Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:16:43.619231055Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:16:43.619361441Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:16:43.640254202Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:16:43.64029351Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:16:43.640306788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:16:43.640329862Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:16:43.640338503Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:16:48.656989528Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:16:48.685492027Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:16:48.685582911Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:16:48.708877944Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:16:48.708920571Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:16:48.708933401Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:16:48.708943786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:16:48.708954399Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:16:53.724297767Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:16:53.750836342Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:16:53.75092933Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:16:53.772549729Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:16:53.772628699Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:16:53.772644194Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:16:53.77268598Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:16:53.772695988Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:16:58.792231109Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:16:58.831058578Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:16:58.831173504Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:16:58.855855507Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:16:58.855900956Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:16:58.855915139Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:16:58.855925266Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:16:58.855934631Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:17:03.872332256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:17:03.902060074Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:17:03.902184164Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:17:03.925411716Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:17:03.925456335Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:17:03.925470931Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:17:03.92550737Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:17:03.925516734Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:17:08.944627146Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:17:08.974596543Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:17:08.974712426Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:17:08.997226887Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:17:08.997293685Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:17:08.997308613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:17:08.997341259Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:17:08.997351763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:17:14.014286399Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:17:14.04433649Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:17:14.044528038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:17:14.067724346Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:17:14.067782416Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:17:14.067797057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:17:14.067806812Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:17:14.06781551Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:17:19.086639897Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:17:19.115836448Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:17:19.115936856Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:17:19.136362593Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:17:19.136404532Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:17:19.136448445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:17:19.136460004Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:17:19.136468922Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:17:24.151435411Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:17:24.182137252Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:17:24.182230719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:17:24.206542741Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:17:24.206600372Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:17:24.206614684Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:17:24.206625133Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:17:24.206633379Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:17:29.22146336Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:17:29.253258665Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:17:29.253375833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:17:29.278918157Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:17:29.278955093Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:17:29.278986127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:17:29.278998679Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:17:29.279006715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:17:34.295571085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:17:34.324038485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:17:34.324153113Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:17:34.348377068Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:17:34.348755936Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:17:34.348792262Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:17:34.348835534Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:17:34.348846711Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:17:39.365107066Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:17:39.395007417Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:17:39.395125053Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:17:39.418851988Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:17:39.418895088Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:17:39.418927543Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:17:39.418938421Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:17:39.418947154Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:17:44.435329936Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:17:44.464561013Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:17:44.46466246Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:17:44.488403882Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:17:44.488546151Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:17:44.488562059Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:17:44.48857275Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:17:44.488581525Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:17:49.504205171Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:17:49.533506819Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:17:49.533598686Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:17:49.558396377Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:17:49.558444662Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:17:49.5584585Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:17:49.558469378Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:17:49.558480002Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:17:54.57322351Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:17:54.602301864Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:17:54.602390144Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:17:54.625685124Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:17:54.625736286Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:17:54.625750801Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:17:54.625762387Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:17:54.625771176Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:17:59.643446447Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:17:59.670215617Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:17:59.670330284Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:17:59.694361959Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:17:59.694425913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:17:59.694442809Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:17:59.694453194Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:17:59.694461679Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:18:04.710082194Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:18:04.740261285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:18:04.740359394Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:18:04.761412264Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:18:04.761455021Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:18:04.761470152Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:18:04.76148007Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:18:04.761490231Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:18:09.777913828Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:18:09.805960626Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:18:09.806080798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:18:09.829931538Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:18:09.829972379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:18:09.830012201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:18:09.830022093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:18:09.830030569Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:18:14.847663267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:18:14.875854312Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:18:14.875967644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:18:14.898564179Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:18:14.898604793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:18:14.898618297Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:18:14.89863043Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:18:14.898639884Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:18:19.915013106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:18:19.944952008Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:18:19.945046752Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:18:19.971844216Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:18:19.971900587Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:18:19.971915215Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:18:19.971925192Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:18:19.971934427Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:18:24.990289916Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:18:25.019977623Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:18:25.02009157Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:18:25.041769681Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:18:25.041813496Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:18:25.04182692Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:18:25.041838503Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:18:25.04184921Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:18:30.060554747Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:18:30.096592888Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:18:30.096734442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:18:30.124791799Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:18:30.124843839Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:18:30.124859648Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:18:30.124871148Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:18:30.124881537Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:18:35.141625517Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:18:35.171178319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:18:35.171293794Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:18:35.193001093Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:18:35.19305619Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:18:35.193091456Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:18:35.193102111Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:18:35.193111626Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:18:40.208779323Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:18:40.237701185Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:18:40.23781652Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:18:40.262353424Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:18:40.262414729Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:18:40.262429145Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:18:40.262437948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:18:40.262447047Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:18:45.277344094Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:18:45.308053543Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:18:45.308180001Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:18:45.333079898Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:18:45.33312273Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:18:45.333137855Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:18:45.333149853Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:18:45.333159535Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:18:50.354305603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:18:50.382509624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:18:50.382609843Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:18:50.405438671Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:18:50.405481626Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:18:50.40549644Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:18:50.405508178Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:18:50.405517781Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:18:55.422217541Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:18:55.451767018Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:18:55.451883196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:18:55.471702092Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:18:55.471749697Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:18:55.471764391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:18:55.471776051Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:18:55.471785274Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:19:00.489279691Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:19:00.518212513Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:19:00.518342251Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:19:00.544328113Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:19:00.544378084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:19:00.544394682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:19:00.544572595Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:19:00.544586683Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:19:05.559718632Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:19:05.589496755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:19:05.58960381Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:19:05.61236832Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:19:05.612528898Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:19:05.61254856Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:19:05.612559611Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:19:05.612569041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:19:10.629276916Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:19:10.657823828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:19:10.657935014Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:19:10.680949593Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:19:10.680992822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:19:10.681006369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:19:10.681018073Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:19:10.681027689Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:19:15.696719609Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:19:15.727564795Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:19:15.727676516Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:19:15.751893281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:19:15.751939096Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:19:15.751953575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:19:15.751963803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:19:15.751973596Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:19:20.769559912Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:19:20.798139537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:19:20.798262324Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:19:20.819229517Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:19:20.819295359Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:19:20.819310232Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:19:20.819319923Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:19:20.819328275Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:19:25.835165335Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:19:25.863744934Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:19:25.863836882Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:19:25.887155487Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:19:25.887197979Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:19:25.887244966Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:19:25.887328492Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:19:25.887339521Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:19:30.903687618Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:19:30.93503752Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:19:30.935163453Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:19:30.9596017Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:19:30.959646152Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:19:30.95966109Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:19:30.959672829Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:19:30.959683557Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:19:35.978315237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:19:36.01042523Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:19:36.010530292Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:19:36.033026529Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:19:36.033086147Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:19:36.033101178Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:19:36.033111705Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:19:36.033121108Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:19:41.05329845Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:19:41.08233718Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:19:41.082444467Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:19:41.106466459Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:19:41.106511894Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:19:41.10652598Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:19:41.106536171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:19:41.106544917Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:19:46.120966132Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:19:46.151657898Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:19:46.151772232Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:19:46.174429557Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:19:46.174484072Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:19:46.174498692Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:19:46.174556215Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:19:46.174567183Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:19:51.193325974Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:19:51.224761243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:19:51.22487522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:19:51.248802281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:19:51.248842787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:19:51.248857549Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:19:51.24886827Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:19:51.248877361Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:19:56.26688282Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:19:56.29639139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:19:56.296594252Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:19:56.320539868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:19:56.320582504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:19:56.320596037Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:19:56.320607139Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:19:56.32061551Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:20:01.36856715Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:20:01.415137162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:20:01.415290891Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:20:01.44642274Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:20:01.446469181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:20:01.446483468Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:20:01.446493778Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:20:01.446502703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:20:06.464800444Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:20:06.49692627Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:20:06.49705309Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:20:06.521144415Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:20:06.521204065Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:20:06.521218777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:20:06.521228187Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:20:06.521251945Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:20:11.54226537Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:20:11.570864392Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:20:11.570993261Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:20:11.592220432Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:20:11.592275321Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:20:11.592290715Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:20:11.592301987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:20:11.592310431Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:20:16.611381018Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:20:16.644401302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:20:16.644619039Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:20:16.669554943Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:20:16.669609258Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:20:16.669626964Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:20:16.669638259Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:20:16.669647206Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:20:21.688311105Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:20:21.719049342Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:20:21.719141988Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:20:21.745910557Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:20:21.745952195Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:20:21.745966738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:20:21.746000225Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:20:21.746008904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:20:26.767315171Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:20:26.799120993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:20:26.799210361Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:20:26.822703055Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:20:26.822748695Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:20:26.822763618Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:20:26.82277583Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:20:26.822784875Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:20:31.840262971Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:20:31.867797261Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:20:31.867888271Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:20:31.89137985Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:20:31.891422189Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:20:31.891435898Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:20:31.891446502Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:20:31.89145714Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:20:36.911119604Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:20:36.941806585Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:20:36.941903346Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:20:36.966679511Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:20:36.966741113Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:20:36.966756819Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:20:36.966768094Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:20:36.966777114Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:20:41.988557923Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:20:42.020175358Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:20:42.020310552Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:20:42.046140088Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:20:42.046194543Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:20:42.04621053Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:20:42.04628075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:20:42.046292504Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:20:47.064713245Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:20:47.095366039Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:20:47.095462529Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:20:47.117810591Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:20:47.117853046Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:20:47.117866211Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:20:47.117878116Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:20:47.117887704Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:20:52.134663339Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:20:52.16418787Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:20:52.164321288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:20:52.189058399Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:20:52.189107121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:20:52.189122368Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:20:57.208106132Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:20:57.235547623Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:20:57.235657207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:20:57.25982758Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:20:57.259885706Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:20:57.259901289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:20:57.25991119Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:20:57.25992013Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:21:02.288579496Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:21:02.322045008Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:21:02.322146936Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:21:02.351257065Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:21:02.351299281Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:21:02.351314541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:21:02.351327371Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:21:02.351336792Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:21:07.36527961Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:21:07.395670517Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:21:07.395766612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:21:07.420885403Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:21:07.420950605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:21:07.42096645Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:21:07.420977151Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:21:07.420986131Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:21:12.443696286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:21:12.474648828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:21:12.474767845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:21:12.500084529Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:21:12.500126963Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:21:12.500140594Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:21:12.500151364Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:21:12.500160528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:21:17.515764426Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:21:17.544046149Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:21:17.544170417Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:21:17.566258487Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:21:17.56630555Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:21:17.56632269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:21:17.566333174Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:21:17.56634209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:21:22.585288294Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:21:22.614970498Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:21:22.615079952Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:21:22.638109143Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:21:22.638152867Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:21:22.63816609Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:21:22.638175753Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:21:22.63818597Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:21:27.654322372Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:21:27.683575654Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:21:27.683685966Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:21:27.708108556Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:21:27.708166776Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:21:27.708183544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:21:27.708249172Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:21:27.708259422Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:21:32.726350952Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:21:32.754187777Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:21:32.754301672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:21:32.7800578Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:21:32.780102033Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:21:32.780117609Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:21:32.78015169Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:21:32.780162887Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:21:37.797273512Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:21:37.823796904Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:21:37.823919577Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:21:37.845155868Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:21:37.845198938Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:21:37.845213521Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:21:37.845224708Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:21:37.845246019Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:21:42.867899366Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:21:42.896206816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:21:42.896830718Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:21:42.925422311Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:21:42.925466579Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:21:42.925482285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:21:42.92549399Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:21:42.925503886Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:21:47.942077265Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:21:47.972200929Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:21:47.972308207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:21:47.992966162Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:21:47.99301215Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:21:47.993027967Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:21:47.993040235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:21:47.993050583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:21:53.016058667Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:21:53.046938302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:21:53.047053431Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:21:53.067585732Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:21:53.067624356Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:21:53.067638319Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:21:53.067649407Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:21:53.067657757Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:21:58.087628613Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:21:58.115309349Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:21:58.115426137Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:21:58.13587397Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:21:58.135955492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:21:58.135971216Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:21:58.135981476Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:21:58.13599994Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:22:03.151768637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:22:03.181868384Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:22:03.181993532Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:22:03.210298454Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:22:03.210385002Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:22:03.210401975Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:22:03.2104126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:22:03.210421906Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:22:08.228118455Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:22:08.25904233Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:22:08.259158279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:22:08.285752964Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:22:08.285798134Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:22:08.285814682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:22:08.285825543Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:22:08.285835469Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:22:13.301917651Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:22:13.331477165Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:22:13.331575495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:22:13.355906122Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:22:13.355953142Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:22:13.35596701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:22:13.355978995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:22:13.355987654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:22:18.371451306Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:22:18.402715607Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:22:18.402824917Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:22:18.427365188Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:22:18.427430212Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:22:18.427444627Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:22:18.427454001Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:22:18.427462077Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:22:23.445765452Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:22:23.476346293Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:22:23.476584909Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:22:23.497861273Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:22:23.497906461Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:22:23.497920301Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:22:23.497932077Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:22:23.497941438Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:22:28.520308329Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:22:28.549964641Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:22:28.550089622Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:22:28.574796216Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:22:28.574837517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:22:28.574850902Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:22:28.574862607Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:22:28.574871773Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:22:33.58927131Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:22:33.618606069Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:22:33.618700203Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:22:33.642965787Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:22:33.643006557Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:22:33.643021965Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:22:33.643032845Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:22:33.643042599Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:22:38.66022616Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:22:38.689856131Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:22:38.689956801Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:22:38.712531584Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:22:38.712575189Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:22:38.712589831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:22:38.712601171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:22:38.712610058Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:22:43.727650802Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:22:43.757691845Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:22:43.757781538Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:22:43.784052641Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:22:43.78409269Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:22:43.78410695Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:22:43.784118022Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:22:43.784127959Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:22:48.803173995Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:22:48.833514429Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:22:48.833647892Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:22:48.858396378Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:22:48.858443017Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:22:48.858457961Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:22:48.858467498Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:22:48.858478649Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:22:53.875752742Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:22:53.907327396Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:22:53.907463504Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:22:53.93239972Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:22:53.932522065Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:22:53.93253871Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:22:53.932562053Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:22:53.932571907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:22:58.947230938Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:22:58.979003977Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:22:58.979118477Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:22:59.002868162Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:22:59.0029403Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:22:59.002957759Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:22:59.002967905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:22:59.003042791Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:23:04.017375582Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:23:04.051129803Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:23:04.051261681Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:23:04.071972331Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:23:04.072031507Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:23:04.072099819Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:23:04.072111784Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:23:04.072120754Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:23:09.09326495Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:23:09.122505044Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:23:09.122596093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:23:09.146057953Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:23:09.146104435Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:23:09.14611836Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:23:09.146130371Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:23:09.146139251Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:23:14.162619538Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:23:14.193468069Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:23:14.193569123Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:23:14.215878235Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:23:14.21592779Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:23:14.215941549Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:23:14.215952941Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:23:14.21596309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:23:19.236561562Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:23:19.265858121Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:23:19.265954719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:23:19.287054494Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:23:19.287097746Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:23:19.287111191Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:23:19.287121875Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:23:19.287132263Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:23:24.29991037Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:23:24.331744157Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:23:24.331852371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:23:24.355650994Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:23:24.355694274Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:23:24.355706978Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:23:24.355717051Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:23:24.355727109Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:23:29.372299041Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:23:29.400260244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:23:29.400363684Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:23:29.422208845Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:23:29.422272208Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:23:29.422288383Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:23:29.422299282Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:23:29.422308968Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:23:34.43927439Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:23:34.467991937Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:23:34.468084761Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:23:34.492129376Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:23:34.492180333Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:23:34.49219674Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:23:34.492206781Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:23:34.492214917Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:23:39.508122411Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:23:39.539028522Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:23:39.539139087Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:23:39.562300343Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:23:39.562346918Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:23:39.562361519Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:23:39.562372203Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:23:39.562380587Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:23:44.578276479Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:23:44.606160091Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:23:44.606294088Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:23:44.627352288Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:23:44.627394204Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:23:44.627407139Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:23:44.627417136Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:23:44.627427106Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:23:49.646164309Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:23:49.672859779Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:23:49.672965341Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:23:49.696583759Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:23:49.696628686Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:23:49.696643698Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:23:49.696654355Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:23:49.696663881Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:23:54.710009991Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:23:54.738295782Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:23:54.738391982Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:23:54.764586846Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:23:54.764642255Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:23:54.764657068Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:23:54.764668114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:23:54.764676811Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:23:59.784122176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:23:59.814063093Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:23:59.814168588Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:23:59.838592977Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:23:59.838635483Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:24:04.857294556Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:24:04.885118685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:24:04.885307571Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:24:04.908893769Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:24:04.908936731Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:24:04.908951268Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:24:04.908962524Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:24:04.908971451Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:24:09.929624718Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:24:09.959688608Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:24:09.959809377Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:24:09.984120577Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:24:09.984168519Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:24:09.984185111Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:24:09.984197281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:24:09.984207388Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:24:14.999909172Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:24:15.031475502Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:24:15.031597494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:24:15.055627894Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:24:15.055672478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:24:15.05568647Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:24:15.055705722Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:24:15.055714752Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:24:20.076617852Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:24:20.10761086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:24:20.107733559Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:24:20.134158649Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:24:20.134218853Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:24:20.134266779Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:24:20.134279456Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:24:20.134288678Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:24:25.150406182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:24:25.178489009Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:24:25.178597958Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:24:25.20016419Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:24:25.200210014Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:24:25.200224531Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:24:25.200248097Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:24:25.200258141Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:24:30.21726758Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:24:30.244291204Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:24:30.244395819Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:24:30.266991996Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:24:30.267033913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:24:30.267047369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:24:30.267085384Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:24:30.267094659Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:24:35.283280361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:24:35.314618471Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:24:35.314741829Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:24:35.340563217Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:24:35.340620558Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:24:35.340635947Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:24:35.340647387Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:24:35.340656092Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:24:40.358364853Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:24:40.389621157Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:24:40.389767117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:24:40.412681325Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:24:40.412720576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:24:40.412733744Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:24:40.412745803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:24:40.412755195Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:24:45.429147703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:24:45.459593095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:24:45.459685909Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:24:45.483153294Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:24:45.48319568Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:24:45.483211901Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:24:45.483223566Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:24:45.483244374Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:24:50.504136579Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:24:50.532612432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:24:50.532729364Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:24:50.557553924Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:24:50.557599292Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:24:50.557613132Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:24:50.557626678Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:24:50.557636902Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:24:55.575213102Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:24:55.607602294Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:24:55.607780124Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:24:55.631772223Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:24:55.631812012Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:24:55.631825407Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:24:55.631837209Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:24:55.631846523Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:25:00.648306442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:25:00.675348756Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:25:00.675445684Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:25:00.697411787Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:25:00.697470727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:25:00.697485889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:25:00.697533504Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:25:00.697543537Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:25:05.714395623Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:25:05.744350288Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:25:05.744527987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:25:05.769613726Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:25:05.769657006Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:25:05.769672777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:25:05.76968495Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:25:05.769694943Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:25:10.788388359Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:25:10.820690862Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:25:10.820842919Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:25:10.84304056Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:25:10.843097734Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:25:10.84311359Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:25:10.843124296Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:25:10.843133322Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:25:15.860343235Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:25:15.889978492Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:25:15.890090427Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:25:15.911562906Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:25:15.911606821Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:25:15.911621884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:25:15.911632776Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:25:15.911641621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:25:20.928756402Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:25:20.957855426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:25:20.957963862Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:25:20.981735669Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:25:20.981776564Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:25:20.981791133Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:25:20.981802833Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:25:20.981812701Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:25:25.996632187Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:25:26.027021784Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:25:26.027136691Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:25:26.052685316Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:25:26.052726207Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:25:26.052740886Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:25:26.052751902Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:25:26.052761282Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:25:31.06831054Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:25:31.098667037Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:25:31.098760821Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:25:31.121735163Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:25:31.121776607Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:25:31.121790002Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:25:31.121800713Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:25:31.121809415Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:25:36.141614108Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:25:36.170662915Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:25:36.170752611Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:25:36.194179521Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:25:36.194250157Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:25:36.194268949Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:25:36.194278299Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:25:36.194286542Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:25:41.213027064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:25:41.242273204Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:25:41.242370786Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:25:41.264380669Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:25:41.264486277Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:25:41.264522383Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:25:41.26453429Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:25:41.264545812Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:25:46.281296901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:25:46.310617445Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:25:46.310769327Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:25:46.334649767Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:25:46.334689478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:25:46.334704581Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:25:46.334714394Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:25:46.334723527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:25:51.353892481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:25:51.386046076Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:25:51.386172203Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:25:51.410381947Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:25:51.410428655Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:25:51.410442232Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:25:51.410454021Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:25:51.410464414Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:25:56.431125956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:25:56.462554016Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:25:56.462668469Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:25:56.488758104Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:25:56.488800178Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:25:56.488841283Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:25:56.488852672Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:25:56.488861448Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:26:01.506852352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:26:01.539581194Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:26:01.53967669Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:26:01.566538155Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:26:01.566584948Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:26:01.566599125Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:26:01.566610729Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:26:01.566619846Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:26:06.586328046Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:26:06.615068265Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:26:06.615177096Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:26:06.638098499Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:26:06.638140678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:26:06.638191686Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:26:06.638203163Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:26:06.638212316Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:26:11.653498939Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:26:11.682171233Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:26:11.682284251Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:26:11.704751334Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:26:11.70480813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:26:11.704822669Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:26:11.704889372Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:26:11.704900566Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:26:16.722447614Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:26:16.750605816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:26:16.750725516Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:26:16.777019006Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:26:16.777062979Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:26:16.777076776Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:26:16.777086845Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:26:16.777095891Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:26:21.797719774Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:26:21.827604863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:26:21.827694372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:26:21.848250073Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:26:21.848292177Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:26:21.848307037Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:26:21.848316862Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:26:21.84832636Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:26:26.863228844Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:26:26.892314912Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:26:26.892533885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:26:26.913182203Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:26:26.913225706Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:26:26.913252705Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:26:26.913263738Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:26:26.913273526Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:26:31.929404211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:26:31.959177621Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:26:31.959317102Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:26:31.980876147Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:26:31.98091748Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:26:31.980931276Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:26:31.98094234Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:26:31.980951762Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:26:36.997322093Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:26:37.024253956Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:26:37.024394279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:26:37.04935164Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:26:37.049407409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:26:37.04942375Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:26:37.049434097Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:26:37.049443065Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:26:42.067854001Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:26:42.096704553Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:26:42.09680521Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:26:42.119801349Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:26:42.119843368Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:26:42.119874063Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:26:42.119884317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:26:42.119892499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:26:47.139321711Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:26:47.169260885Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:26:47.16938268Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:26:47.190655981Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:26:47.190699681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:26:47.190712625Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:26:47.190723888Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:26:47.190734893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:26:52.211842363Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:26:52.242017938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:26:52.242146825Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:26:52.263857242Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:26:52.263902635Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:26:52.2639181Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:26:57.281486393Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:26:57.31132701Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:26:57.31142066Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:26:57.333254773Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:26:57.333296738Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:26:57.333331599Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:26:57.333342487Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:26:57.333351323Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:27:02.354302905Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:27:02.381706963Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:27:02.381800786Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:27:02.403285376Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:27:02.403339457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:27:02.403353565Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:27:02.40337829Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:27:02.403389424Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:27:07.416765862Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:27:07.44440753Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:27:07.444651751Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:27:07.466938009Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:27:07.466991617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:27:07.46700809Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:27:07.46701784Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:27:07.467025116Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:27:12.485207486Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:27:12.515722028Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:27:12.51583132Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:27:12.536037818Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:27:12.536079842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:27:12.536093657Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:27:12.536105299Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:27:12.536114639Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:27:17.556366954Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:27:17.585969072Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:27:17.586127421Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:27:17.607878952Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:27:17.607932209Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:27:17.607946985Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:27:17.607957746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:27:17.607967388Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:27:22.625132726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:27:22.654711688Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:27:22.654807696Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:27:22.6771243Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:27:22.677172894Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:27:22.67718881Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:27:22.677200438Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:27:22.677210194Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:27:27.693597085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:27:27.722500189Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:27:27.722602052Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:27:27.746652804Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:27:27.746695885Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:27:27.746709942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:27:32.766292955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:27:32.795194074Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:27:32.795303262Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:27:32.819682502Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:27:32.819739924Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:27:32.819755272Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:27:32.819766103Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:27:32.819774476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:27:37.834227317Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:27:37.86422707Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:27:37.864327233Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:27:37.885042358Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:27:37.885091322Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:27:37.88510738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:27:37.885117756Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:27:37.885125436Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:27:42.903696004Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:27:42.934715236Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:27:42.934821656Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:27:42.95774026Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:27:42.957798716Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:27:42.957813683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:27:42.957822718Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:27:42.957830928Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:27:47.979296641Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:27:48.010028175Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:27:48.010145935Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:27:48.03438861Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:27:48.034434039Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:27:48.03444812Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:27:48.03445945Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:27:48.034469309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:27:53.052005026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:27:53.082409041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:27:53.082541414Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:27:53.110922134Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:27:53.110963489Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:27:53.110977572Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:27:53.110988704Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:27:58.129345674Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:27:58.160595962Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:27:58.160710021Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:27:58.183134331Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:27:58.183175789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:27:58.183190622Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:27:58.183202811Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:27:58.183212009Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:28:03.198291558Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:28:03.228125347Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:28:03.228267268Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:28:03.250528663Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:28:03.250591602Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:28:03.25060811Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:28:03.250618102Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:28:03.25062692Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:28:08.266275304Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:28:08.29685693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:28:08.296970688Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:28:08.322724741Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:28:08.322770365Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:28:08.322785459Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:28:13.339286598Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:28:13.366466384Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:28:13.366586427Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:28:13.387461817Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:28:13.387503228Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:28:13.387518045Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:28:13.387528828Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:28:13.387539096Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:28:18.405120197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:28:18.437612784Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:28:18.43770428Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:28:18.458307467Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:28:18.458348337Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:28:18.458361763Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:28:23.473095023Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:28:23.501598432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:28:23.501725133Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:28:23.526537974Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:28:23.526937357Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:28:23.526961241Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:28:23.526973497Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:28:23.526984862Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:28:28.549916686Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:28:28.58090254Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:28:28.580990528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:28:28.60534461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:28:28.605386895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:28:28.605401185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:28:28.605461916Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:28:28.605472556Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:28:33.622338957Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:28:33.652244486Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:28:33.652356253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:28:33.675310946Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:28:33.675356125Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:28:33.675370473Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:28:33.675379837Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:28:33.675388728Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:28:38.691106158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:28:38.720907956Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:28:38.721015191Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:28:38.742915859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:28:38.742960771Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:28:38.742993168Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:28:38.743004194Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:28:38.743013609Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:28:43.756458497Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:28:43.787284935Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:28:43.78741059Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:28:43.808591336Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:28:43.809019747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:28:43.809207169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:28:43.809224171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:28:43.809247801Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:28:48.826495385Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:28:48.855935693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:28:48.856046833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:28:48.879177502Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:28:48.87921843Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:28:48.879232858Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:28:48.879257991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:28:48.879266986Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:28:53.89568825Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:28:53.925217536Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:28:53.925347078Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:28:53.944690444Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:28:53.944733324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:28:53.944748244Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:28:53.944758778Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:28:53.944769202Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:28:58.961212151Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:28:58.990353293Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:28:58.990436945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:28:59.011079699Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:28:59.011128971Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:28:59.0111438Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:28:59.011153756Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:28:59.011162295Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:29:04.028293388Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:29:04.057699854Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:29:04.057794807Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:29:04.080030949Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:29:04.080084744Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:29:04.08009955Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:29:04.080110073Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:29:04.080118573Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:29:09.097771554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:29:09.128495963Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:29:09.128621269Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:29:09.153168673Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:29:09.153211441Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:29:09.153225057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:29:09.153281381Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:29:09.153292398Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:29:14.168950124Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:29:14.197251317Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:29:14.197377084Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:29:14.221769672Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:29:14.2218283Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:29:14.221842257Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:29:14.221851807Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:29:14.221860366Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:29:19.241825389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:29:19.273006169Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:29:19.273104273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:29:19.298949626Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:29:19.299001531Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:29:19.299016623Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:29:19.299026927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:29:19.299036967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:29:24.316270658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:29:24.345987635Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:29:24.34608062Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:29:24.366831367Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:29:24.366871317Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:29:24.366884488Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:29:24.366896784Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:29:24.366906415Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:29:29.382841887Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:29:29.412492207Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:29:29.412605402Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:29:29.432218282Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:29:29.432272977Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:29:29.432288854Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:29:29.432300252Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:29:29.432309004Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:29:34.449607085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:29:34.478836223Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:29:34.478962228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:29:34.500909443Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:29:34.500950119Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:29:34.500963648Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:29:34.500974679Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:29:34.500982986Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:29:39.520703423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:29:39.550203502Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:29:39.550309324Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:29:39.57493133Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:29:39.574971741Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:29:39.57500236Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:29:39.575012397Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:29:39.575020499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:29:44.59129788Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:29:44.622674423Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:29:44.622791311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:29:44.646949446Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:29:44.646998161Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:29:44.647015274Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:29:44.647026853Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:29:44.647037895Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:29:49.664167579Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:29:49.695041179Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:29:49.695162755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:29:49.71953705Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:29:49.71957963Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:29:49.719593884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:29:49.719605401Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:29:49.719614722Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:29:54.735847597Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:29:54.763843984Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:29:54.763953421Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:29:54.789775787Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:29:54.789835353Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:29:54.789850513Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:29:54.789860699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:29:54.789869142Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:29:59.80753237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:29:59.838419575Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:29:59.83850757Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:29:59.86211614Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:29:59.862159553Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:29:59.862172802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:29:59.862184507Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:29:59.862194408Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:30:04.879298135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:30:04.908061611Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:30:04.908195603Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:30:04.933536456Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:30:04.9335802Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:30:04.933595247Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:30:04.933606613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:30:04.933616536Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:30:09.947753743Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:30:09.977980127Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:30:09.978093749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:30:09.998147826Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:30:09.998189281Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:30:09.998203746Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:30:09.998213965Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:30:09.998224009Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:30:15.023320497Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:30:15.052688896Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:30:15.052785554Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:30:15.077600909Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:30:15.077672134Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:30:15.077687541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:30:15.077698069Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:30:15.077706915Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:30:20.098189452Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:30:20.12789638Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:30:20.128022798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:30:20.151219461Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:30:20.15128339Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:30:20.151297624Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:30:20.151308285Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:30:20.151317965Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:30:25.168098776Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:30:25.198917025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:30:25.199022091Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:30:25.223704662Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:30:25.223749085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:30:25.223763108Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:30:25.223774324Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:30:25.223783546Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:30:30.239176611Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:30:30.269461457Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:30:30.269601507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:30:30.295005027Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:30:30.295049728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:30:30.295063945Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:30:30.295075391Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:30:30.29508517Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:30:35.31436445Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:30:35.346646464Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:30:35.346756353Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:30:35.37051909Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:30:35.370566528Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:30:35.370581708Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:30:35.370631564Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:30:35.370641854Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:30:40.388295406Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:30:40.419507699Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:30:40.419617546Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:30:40.442669286Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:30:40.442712464Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:30:40.442726187Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:30:45.45976064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:30:45.491248867Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:30:45.491338576Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:30:45.514394303Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:30:45.514438965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:30:45.514452896Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:30:45.514464829Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:30:45.514473917Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:30:50.532281167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:30:50.561784146Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:30:50.561887369Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:30:50.590432418Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:30:50.590804322Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:30:50.590827079Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:30:50.590840601Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:30:50.590852328Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:30:55.609107104Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:30:55.640532897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:30:55.640650049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:30:55.662029748Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:30:55.662075386Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:30:55.662091051Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:30:55.662102433Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:30:55.662111672Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:31:00.677520487Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:31:00.705678645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:31:00.705812832Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:31:00.72893944Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:31:00.728981132Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:31:00.72901103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:31:00.729021809Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:31:00.729031302Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:31:05.746591125Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:31:05.7771998Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:31:05.777336317Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:31:05.798215423Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:31:05.798278313Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:31:05.79831447Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:31:05.798341881Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:31:05.798350924Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:31:10.818282396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:31:10.848334552Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:31:10.848587603Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:31:10.870773561Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:31:10.870820978Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:31:10.870834718Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:31:10.870844999Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:31:10.870853604Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:31:15.889266823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:31:15.918083207Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:31:15.918170202Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:31:15.938838535Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:31:15.938885448Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:31:15.938900243Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:31:15.938911675Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:31:15.938922588Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:31:20.958701066Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:31:20.988915689Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:31:20.989030798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:31:21.0108041Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:31:21.01084541Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:31:21.010859319Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:31:21.01087061Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:31:21.010879617Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:31:26.030325661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:31:26.057867685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:31:26.057979589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:31:26.082559193Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:31:26.082601051Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:31:26.082646108Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:31:26.082656536Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:31:26.082665219Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:31:31.103730569Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:31:31.133102191Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:31:31.133198398Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:31:31.154263335Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:31:31.154303397Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:31:31.154315925Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:31:31.154327609Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:31:31.154337837Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:31:36.169808982Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:31:36.198425214Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:31:36.198544138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:31:36.220280284Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:31:36.220326248Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:31:36.220339712Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:31:36.220349657Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:31:36.220360413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:31:41.239093834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:31:41.269463744Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:31:41.269581068Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:31:41.295604476Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:31:41.295644076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:31:41.295678862Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:31:41.29571172Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:31:41.295721167Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:31:46.31526982Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:31:46.344746575Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:31:46.344855607Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:31:46.368686689Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:31:46.368730708Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:31:46.368744355Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:31:46.368756521Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:31:46.368766953Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:31:51.384277641Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:31:51.41195779Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:31:51.412043298Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:31:51.439699344Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:31:51.439740667Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:31:51.439754186Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:31:51.439804147Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:31:51.439813272Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:31:56.460276392Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:31:56.4869801Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:31:56.487075562Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:31:56.507938506Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:31:56.50798119Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:31:56.507995615Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:31:56.508031222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:31:56.508040321Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:32:01.528307431Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:32:01.563092695Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:32:01.563256442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:32:01.584764758Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:32:01.584812789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:32:01.584827217Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:32:01.584838298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:32:01.584847888Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:32:06.604348568Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:32:06.636933509Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:32:06.637070722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:32:06.659615405Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:32:06.659676874Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:32:06.659693781Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:32:06.659703768Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:32:06.659712667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:32:11.675375117Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:32:11.704682302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:32:11.704792427Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:32:11.729355448Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:32:11.72939717Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:32:11.72941103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:32:11.729423015Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:32:11.729433641Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:32:16.746612428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:32:16.780965635Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:32:16.781057704Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:32:16.803160244Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:32:16.803207507Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:32:16.803223572Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:32:21.823776158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:32:21.853169949Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:32:21.853294181Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:32:21.873176314Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:32:21.873218149Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:32:21.873231814Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:32:21.87325356Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:32:21.873262849Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:32:26.89227518Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:32:26.920971602Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:32:26.921065476Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:32:26.944380508Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:32:26.944523324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:32:26.944542306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:32:26.944553724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:32:26.9445623Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:32:31.960763456Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:32:31.990609938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:32:31.990716842Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:32:32.015753904Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:32:32.015813658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:32:32.01582979Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:32:32.015839735Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:32:32.015848512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:32:37.032284444Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:32:37.063483317Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:32:37.063573873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:32:37.08782233Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:32:37.087865718Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:32:37.087880211Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:32:37.087893393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:32:37.087904254Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:32:42.110338237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:32:42.140844507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:32:42.140972274Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:32:42.167439241Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:32:42.1674812Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:32:42.167495286Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:32:42.167505705Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:32:42.167515391Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:32:47.185187901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:32:47.218231601Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:32:47.218362247Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:32:47.241987468Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:32:47.242038614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:32:47.242054986Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:32:52.261874121Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:32:52.29266878Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:32:52.292780335Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:32:52.317577883Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:32:52.318002721Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:32:52.318043014Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:32:52.318056938Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:32:52.318068181Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:32:57.340335901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:32:57.368642437Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:32:57.36876062Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:32:57.38909123Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:32:57.389131765Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:32:57.389147851Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:32:57.389160977Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:32:57.389172477Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:33:02.41202372Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:33:02.441779356Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:33:02.441911246Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:33:02.470354665Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:33:02.470486521Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:33:02.470502603Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:33:02.470537914Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:33:02.470547049Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:33:07.484293154Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:33:07.514076149Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:33:07.514192267Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:33:07.536290332Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:33:07.536336083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:33:07.536350474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:33:07.536362506Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:33:07.536371888Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:33:12.554614917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:33:12.58500512Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:33:12.585125337Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:33:12.608931402Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:33:12.608974206Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:33:12.609040908Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:33:12.609053125Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:33:12.609062207Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:33:17.630265629Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:33:17.658671417Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:33:17.658778373Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:33:17.682286517Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:33:17.682329564Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:33:17.682345361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:33:17.682367226Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:33:17.682377151Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:33:22.704277713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:33:22.734121826Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:33:22.734251022Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:33:22.754990984Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:33:22.755031268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:33:22.755045134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:33:22.755068315Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:33:22.755077419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:33:27.773622528Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:33:27.80384124Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:33:27.803938826Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:33:27.82564294Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:33:27.825682781Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:33:27.82572571Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:33:27.8257353Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:33:27.825744116Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:33:32.845284708Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:33:32.87329798Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:33:32.873396033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:33:32.894831373Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:33:32.894873781Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:33:32.894887376Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:33:32.894919218Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:33:32.894928001Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:33:37.910088958Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:33:37.9372851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:33:37.937380923Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:33:37.956040556Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:33:37.956085592Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:33:37.956100297Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:33:37.956111605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:33:37.956121606Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:33:42.973111142Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:33:43.003111166Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:33:43.003250855Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:33:43.027305546Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:33:43.027347631Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:33:43.027363006Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:33:43.027373966Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:33:43.027383076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:33:48.049450877Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:33:48.078968207Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:33:48.079086586Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:33:48.100585122Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:33:48.100625492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:33:48.100639356Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:33:48.100649441Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:33:48.100658736Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:33:53.114468235Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:33:53.143083339Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:33:53.14319767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:33:53.163441739Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:33:53.16349176Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:33:53.163506631Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:33:53.1635176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:33:53.163528043Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:33:58.184286187Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:33:58.211982521Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:33:58.212092813Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:33:58.234615299Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:33:58.234661961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:33:58.234675682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:33:58.234686285Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:33:58.234696687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:34:03.251288142Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:34:03.280844458Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:34:03.280980873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:34:03.305207919Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:34:03.305261543Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:34:03.305277062Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:34:03.305286712Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:34:03.305295965Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:34:08.32327884Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:34:08.353563629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:34:08.353704497Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:34:08.377633562Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:34:08.377676098Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:34:08.37769176Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:34:08.377702592Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:34:08.377712877Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:34:13.392726189Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:34:13.422344785Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:34:13.422459609Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:34:13.443666187Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:34:13.443708768Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:34:13.443722753Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:34:13.443734516Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:34:13.443745171Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:34:18.464490484Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:34:18.492811176Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:34:18.49294121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:34:18.516796349Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:34:18.516837318Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:34:18.516853476Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:34:18.516864609Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:34:18.51687359Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:34:23.53229195Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:34:23.560684673Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:34:23.560817875Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:34:23.585520086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:34:23.585561998Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:34:23.585622798Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:34:23.585636067Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:34:23.585644795Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:34:28.60328895Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:34:28.633060942Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:34:28.6331679Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:34:28.660203869Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:34:28.660267432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:34:28.660283253Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:34:28.660293154Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:34:28.660302434Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:34:33.676148571Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:34:33.704863559Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:34:33.704961253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:34:33.729117763Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:34:33.729175047Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:34:33.729189159Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:34:33.729200487Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:34:33.72920862Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:34:38.748377525Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:34:38.77845633Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:34:38.778615524Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:34:38.8018679Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:34:38.801924605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:34:38.801999146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:34:38.802012477Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:34:38.802021353Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:34:43.818289857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:34:43.84886316Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:34:43.848960805Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:34:43.874251563Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:34:43.874294772Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:34:43.874308197Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:34:43.874319275Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:34:43.874328209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:34:48.890016202Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:34:48.921401519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:34:48.921525051Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:34:48.945727306Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:34:48.945769553Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:34:48.945783717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:34:48.945795718Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:34:48.945805202Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:34:53.960099822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:34:53.992816529Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:34:53.992939901Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:34:54.019085871Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:34:54.019126239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:34:54.019140649Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:34:54.019153387Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:34:54.019163199Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:34:59.036224415Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:34:59.067104887Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:34:59.067201228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:34:59.090941814Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:34:59.091003607Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:34:59.091017587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:34:59.091028628Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:34:59.091037092Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:35:04.106631369Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:35:04.138764291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:35:04.138854162Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:35:04.166209997Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:35:04.166266233Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:35:04.166280842Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:35:04.166291347Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:35:04.166301733Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:35:09.184311786Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:35:09.215182049Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:35:09.215315297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:35:09.240589523Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:35:09.240639341Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:35:09.24065583Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:35:09.24066773Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:35:09.240678217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:35:14.260539768Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:35:14.288360434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:35:14.288551731Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:35:14.311505812Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:35:14.311548532Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:35:14.311561696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:35:14.311572077Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:35:14.311580441Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:35:19.331852064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:35:19.361398913Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:35:19.361525466Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:35:19.387120236Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:35:19.387164168Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:35:19.387179484Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:35:19.387189827Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:35:19.387199567Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:35:24.40446424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:35:24.432095303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:35:24.432216501Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:35:24.457803244Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:35:24.457845017Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:35:24.457858755Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:35:24.457869999Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:35:24.45788041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:35:29.474153396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:35:29.505014351Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:35:29.50514525Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:35:29.529525951Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:35:29.529567243Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:35:29.529581402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:35:29.529593702Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:35:29.529603042Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:35:34.54410967Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:35:34.573880043Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:35:34.573972186Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:35:34.593895026Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:35:39.612891732Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:35:39.643695425Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:35:39.643809035Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:35:39.666218281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:35:39.666277886Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:35:39.666302631Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:35:39.666313063Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:35:39.666321743Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:35:44.681109261Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:35:44.71174689Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:35:44.711870846Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:35:44.735934672Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:35:44.735984435Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:35:44.735998847Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:35:44.736008848Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:35:44.736017298Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:35:49.756780265Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:35:49.786816659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:35:49.786908811Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:35:49.809899344Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:35:49.809955363Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:35:49.809970581Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:35:49.809980852Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:35:49.809989224Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:35:54.829472967Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:35:54.855385298Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:35:54.855512668Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:35:54.879742691Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:35:54.879783574Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:35:54.879797617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:35:54.879808195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:35:54.879818889Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:35:59.899561964Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:35:59.927733618Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:35:59.927856579Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:35:59.951644266Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:35:59.951687644Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:35:59.951703481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:35:59.951714701Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:35:59.951724311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:36:04.968319457Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:36:05.000607577Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:36:05.000695961Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:36:05.027376414Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:36:05.027440603Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:36:05.027456931Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:36:05.027466749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:36:05.0274752Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:36:10.046300567Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:36:10.076556949Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:36:10.076673918Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:36:10.100948879Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:36:10.100991265Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:36:10.101004916Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:36:10.101016724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:36:10.101026339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:36:15.117265539Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:36:15.146254513Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:36:15.146356039Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:36:15.170247053Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:36:15.170292003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:36:15.170304935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:36:15.170314343Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:36:15.170323216Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:36:20.189132308Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:36:20.219520964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:36:20.219612228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:36:20.240822185Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:36:20.240895865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:36:20.240911169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:36:20.240921201Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:36:20.240929979Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:36:25.25789263Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:36:25.288693637Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:36:25.288813956Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:36:25.308613091Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:36:25.308669756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:36:25.308685542Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:36:25.308696838Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:36:25.308706919Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:36:30.324290487Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:36:30.354677331Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:36:30.354793507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:36:30.379776554Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:36:30.379820523Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:36:30.379835581Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:36:30.379847793Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:36:30.379857081Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:36:35.399301035Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:36:35.429149504Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:36:35.429276692Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:36:35.45306986Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:36:35.453113515Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:36:35.453128742Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:36:35.453139998Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:36:35.453149999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:36:40.466106394Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:36:40.496830755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:36:40.49693719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:36:40.516603096Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:36:40.516655669Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:36:40.516670016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:36:40.516679965Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:36:40.516688722Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:36:45.534857201Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:36:45.566976975Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:36:45.567090281Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:36:45.590910987Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:36:45.590955256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:36:45.590969531Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:36:45.590980926Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:36:45.590999999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:36:50.605120857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:36:50.634580488Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:36:50.634708722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:36:50.658519438Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:36:50.658563594Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:36:50.658577491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:36:50.658588476Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:36:50.658597795Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:36:55.679259703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:36:55.709487422Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:36:55.709596436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:36:55.733015098Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:36:55.733057572Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:36:55.733070863Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:36:55.733080406Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:36:55.733089099Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:37:00.750290929Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:37:00.779690988Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:37:00.779807156Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:37:00.804714241Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:37:00.804759449Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:37:05.821193078Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:37:05.848064466Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:37:05.848172699Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:37:05.871114274Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:37:05.87116607Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:37:05.871182508Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:37:05.871192396Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:37:05.871200825Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:37:10.884757743Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:37:10.911988848Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:37:10.912079066Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:37:10.933167973Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:37:10.933210576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:37:10.933224222Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:37:10.933247044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:37:10.933256288Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:37:15.950179212Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:37:15.977806218Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:37:15.977934974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:37:16.000748304Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:37:16.000797863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:37:16.00081138Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:37:16.000822279Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:37:16.000832328Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:37:21.018672783Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:37:21.04968547Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:37:21.049814943Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:37:21.070445428Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:37:21.070493752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:37:21.070507296Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:37:21.070517061Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:37:21.070527892Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:37:26.087218043Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:37:26.119670413Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:37:26.119770625Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:37:26.144897471Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:37:26.144942081Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:37:26.144956552Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:37:26.144968233Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:37:26.144977503Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:37:31.166530286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:37:31.195834867Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:37:31.195926158Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:37:31.217940354Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:37:31.217983191Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:37:31.217996961Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:37:31.218008212Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:37:31.218035921Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:37:36.241667589Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:37:36.269070926Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:37:36.269194368Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:37:36.294215989Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:37:36.294282827Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:37:36.294298559Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:37:36.294307868Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:37:36.294316611Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:37:36.294467029Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T03:37:41.310671797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:37:41.338806363Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:37:41.338913158Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:37:41.362128682Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:37:41.362170678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:37:41.362184251Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:37:41.362207105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:37:41.362216297Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:37:46.381464964Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:37:46.408873161Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:37:46.408990705Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:37:46.431674079Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:37:46.431716821Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:37:46.431731166Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:37:46.431741762Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:37:46.431751432Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:37:51.453782417Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:37:51.483669072Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:37:51.483763849Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:37:51.506216453Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:37:51.506272056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:37:51.506286089Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:37:51.506295737Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:37:51.506304331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:37:56.523752127Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:37:56.552964614Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:37:56.553057373Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:37:56.579341765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:37:56.579424018Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:37:56.579439281Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:38:01.610855287Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:38:01.686348944Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:38:01.686496151Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:38:01.71383477Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:38:01.713879599Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:38:01.71389464Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:38:01.713905084Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:38:01.713915387Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:38:06.731776468Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:38:06.763218544Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:38:06.763325945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:38:06.789815689Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:38:06.789859718Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:38:06.789876023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:38:06.78988668Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:38:06.789896158Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:38:11.808291553Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:38:11.838749466Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:38:11.838852278Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:38:11.861341871Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:38:11.861385846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:38:11.861400134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:38:11.861411631Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:38:11.86142183Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:38:16.877780811Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:38:16.908041525Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:38:16.908160212Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:38:16.931689797Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:38:16.931758601Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:38:16.931773941Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:38:16.931783607Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:38:16.931792625Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:38:21.945288805Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:38:21.97529677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:38:21.975388045Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:38:21.999656992Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:38:21.999713285Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:38:21.999729601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:38:21.99973934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:38:21.999747801Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:38:27.019708561Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:38:27.047323885Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:38:27.047438832Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:38:27.072966208Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:38:27.073008166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:38:27.07302237Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:38:27.073062517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:38:27.073072419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:38:32.08819513Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:38:32.119773287Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:38:32.11988616Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:38:32.141925736Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:38:32.141971828Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:38:32.141987673Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:38:32.141998065Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:38:32.142008437Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:38:37.163273209Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:38:37.193249614Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:38:37.193376343Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:38:37.218353439Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:38:37.218397235Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:38:37.218411494Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:38:37.218424024Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:38:37.218433537Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:38:42.235274981Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:38:42.265008248Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:38:42.265124841Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:38:42.290900664Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:38:42.290945129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:38:42.290959061Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:38:42.290971399Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:38:42.290980948Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:38:47.304293633Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:38:47.333151669Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:38:47.333273199Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:38:47.357549661Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:38:47.35759224Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:38:47.357606057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:38:47.357616817Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:38:47.357627339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:38:52.377388737Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:38:52.406055197Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:38:52.406189595Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:38:52.428192331Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:38:52.428247481Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:38:52.428261426Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:38:52.42827197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:38:52.428280436Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:38:57.44719187Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:38:57.475524327Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:38:57.475622122Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:38:57.499250102Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:38:57.49929477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:38:57.499308576Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:38:57.499319612Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:38:57.499328848Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:39:02.519290132Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:39:02.5470161Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:39:02.547140956Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:39:02.56899308Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:39:02.569054378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:39:02.569070453Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:39:02.569082063Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:39:02.569090418Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:39:07.58452235Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:39:07.613836857Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:39:07.613958076Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:39:07.639975702Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:39:07.640019244Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:39:07.640032104Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:39:07.640043243Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:39:07.640051829Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:39:12.658385979Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:39:12.688644752Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:39:12.688737583Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:39:12.711200225Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:39:12.711255096Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:39:12.711269828Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:39:12.711280135Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:39:12.711289052Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:39:17.730430913Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:39:17.758292305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:39:17.75841611Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:39:17.782085636Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:39:17.782131957Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:39:17.7821473Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:39:17.782200026Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:39:17.782209921Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:39:22.803256446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:39:22.83308333Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:39:22.833174355Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:39:22.856666597Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:39:22.856719426Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:39:22.856735013Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:39:22.856746243Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:39:22.856754571Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:39:27.874437262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:39:27.904836436Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:39:27.904952639Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:39:27.925797419Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:39:27.925850948Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:39:27.925866791Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:39:27.925877471Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:39:27.92588567Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:39:32.942267245Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:39:32.971818432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:39:32.971911672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:39:32.995257934Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:39:32.995298449Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:39:32.995313401Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:39:32.995325362Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:39:32.995334975Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:39:38.013585745Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:39:38.043936711Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:39:38.044030006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:39:38.071817026Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:39:38.071871489Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:39:38.071887801Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:39:38.071898825Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:39:38.071907478Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:39:43.093274987Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:39:43.122564307Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:39:43.122677798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:39:43.145558878Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:39:43.145615722Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:39:43.14563051Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:39:43.145640123Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:39:43.145648535Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:39:48.162276367Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:39:48.190331387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:39:48.190424904Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:39:48.211762527Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:39:48.211807134Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:39:48.211821279Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:39:48.211831781Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:39:48.211841403Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:39:53.225853082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:39:53.255078809Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:39:53.255207057Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:39:53.276604604Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:39:53.276650065Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:39:53.276664899Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:39:53.276677978Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:39:53.276687898Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:39:58.296271642Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:39:58.324318438Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:39:58.324509409Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:39:58.345797362Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:39:58.345852428Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:39:58.345867072Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:39:58.345876853Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:39:58.345885262Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:40:03.363443207Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:40:03.394150751Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:40:03.39430468Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:40:03.417058702Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:40:03.417101166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:40:03.417117032Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:40:03.417127688Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:40:03.417137833Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:40:08.430269836Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:40:08.459698399Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:40:08.459796997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:40:08.48739373Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:40:08.487443096Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:40:08.487458349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:40:08.487469365Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:40:08.487476901Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:40:13.504958615Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:40:13.536379081Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:40:13.536572993Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:40:13.56020119Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:40:13.560266355Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:40:13.560281878Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:40:13.560293232Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:40:13.560302119Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:40:18.58218205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:40:18.613360951Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:40:18.613484589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:40:18.634508826Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:40:18.634557075Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:40:18.634572909Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:40:18.634584593Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:40:18.634594508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:40:23.650404854Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:40:23.680874713Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:40:23.680990106Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:40:23.707224042Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:40:23.7072823Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:40:23.707297385Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:40:23.707308353Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:40:23.707317445Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:40:28.723863023Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:40:28.752499136Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:40:28.752626711Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:40:28.776778196Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:40:28.776822609Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:40:28.776836567Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:40:28.776847848Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:40:28.776858049Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:40:33.790294234Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:40:33.819450542Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:40:33.819683959Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:40:33.84102002Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:40:33.841440529Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:40:33.841465554Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:40:33.841478939Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:40:33.841490776Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:40:38.856144809Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:40:38.8865959Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:40:38.886688769Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:40:38.906998851Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:40:38.907047237Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:40:38.907062988Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:40:38.907075594Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:40:38.907085397Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:40:43.924292472Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:40:43.950343766Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:40:43.950457999Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:40:43.971121436Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:40:43.971177175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:40:43.971193299Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:40:43.971260344Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:40:43.971271901Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:40:48.991364812Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:40:49.02507272Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:40:49.025192658Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:40:49.048043859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:40:49.048086907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:40:49.048116716Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:40:49.048127828Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:40:49.048136943Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:40:54.067486991Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:40:54.09730927Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:40:54.09740294Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:40:54.118929149Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:40:54.118991985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:40:54.119007327Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:40:54.119017253Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:40:54.119025488Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:40:59.133383457Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:40:59.162462381Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:40:59.162564483Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:40:59.185140655Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:40:59.185182175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:40:59.185211875Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:40:59.18522275Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:40:59.18523145Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:41:04.203126962Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:41:04.231798266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:41:04.231916677Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:41:04.256682492Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:41:04.256732678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:41:04.256749444Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:41:04.256760688Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:41:09.270091759Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:41:09.299732818Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:41:09.299832063Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:41:09.325283571Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:41:09.32532296Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:41:09.325336957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:41:09.325376535Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:41:09.325385323Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:41:14.34201458Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:41:14.373042889Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:41:14.373136753Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:41:14.393382384Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:41:14.393429004Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:41:14.393442774Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:41:14.393455103Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:41:14.393464993Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:41:19.41308401Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:41:19.443097365Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:41:19.443209766Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:41:19.465011777Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:41:19.4650539Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:41:19.465068006Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:41:19.465080429Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:41:19.465089449Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:41:24.483462999Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:41:24.511517464Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:41:24.511635156Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:41:24.534755778Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:41:24.5348122Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:41:24.534828018Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:41:24.534838165Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:41:24.534847002Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:41:29.551105137Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:41:29.579097432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:41:29.579218971Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:41:29.604875473Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:41:29.604918473Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:41:29.604932502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:41:29.604942683Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:41:29.604951178Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:41:34.622298634Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:41:34.647854179Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:41:34.647951102Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:41:34.667049046Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:41:34.667089115Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:41:34.66710259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:41:34.667112419Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:41:34.667121216Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:41:39.687153122Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:41:39.712350086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:41:39.712525649Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:41:39.73504911Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:41:39.735095725Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:41:39.735109613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:41:39.735120216Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:41:39.735130371Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:41:44.752283927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:41:44.781432281Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:41:44.781526728Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:41:44.805508335Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:41:44.805552248Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:41:44.805566196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:41:44.805578289Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:41:44.805588481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:41:49.826267821Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:41:49.857216182Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:41:49.857341663Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:41:49.881225562Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:41:49.881296919Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:41:49.881312539Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:41:49.881324076Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:41:49.881333528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:41:54.900271848Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:41:54.930380036Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:41:54.930488839Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:41:54.953775161Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:41:54.953817228Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:41:54.953831253Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:41:54.953842286Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:41:54.953852219Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:41:59.973336885Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:42:00.003710784Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:42:00.003821172Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:42:00.029593037Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:42:00.029640972Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:42:00.029656675Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:42:00.029669489Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:42:00.029679305Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:42:05.048617144Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:42:05.079357765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:42:05.079880284Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:42:05.104059175Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:42:05.104101044Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:42:05.104114585Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:42:05.104135864Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:42:05.104145181Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:42:10.118821032Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:42:10.149396828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:42:10.149506412Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:42:10.176962798Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:42:10.177012752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:42:10.177029596Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:42:10.177042327Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:42:10.177053502Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:42:15.194287785Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:42:15.225290401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:42:15.225407311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:42:15.246391571Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:42:15.246435192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:42:15.246448694Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:42:15.246458835Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:42:15.246469096Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:42:20.264303529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:42:20.295007963Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:42:20.295117092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:42:20.321151891Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:42:20.321196878Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:42:20.32121279Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:42:20.321285952Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:42:20.321296919Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:42:25.339089579Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:42:25.369346316Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:42:25.369441559Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:42:25.391575764Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:42:25.391633816Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:42:25.391648042Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:42:25.391658947Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:42:25.391667495Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:42:30.410277168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:42:30.438157984Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:42:30.438279474Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:42:30.459630618Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:42:30.460059356Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:42:30.460083444Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:42:30.460095402Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:42:30.460106627Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:42:35.476578035Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:42:35.50600868Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:42:35.506101638Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:42:35.526613223Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:42:35.52701919Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:42:35.52720138Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:42:35.527361604Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:42:35.527377424Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:42:40.545297092Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:42:40.573341942Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:42:40.573444706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:42:40.596342478Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:42:40.596384531Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:42:40.596399293Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:42:40.596423347Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:42:40.596487819Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:42:45.615168846Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:42:45.646498771Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:42:45.64662783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:42:45.670439421Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:42:45.670499047Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:42:45.670537919Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:42:45.670566253Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:42:45.670576813Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:42:50.689354573Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:42:50.717420809Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:42:50.717521956Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:42:50.742264699Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:42:50.742309973Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:42:50.742355821Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:42:50.742380567Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:42:50.742389391Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:42:55.760289649Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:42:55.789093995Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:42:55.789207748Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:42:55.810224795Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:42:55.810283614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:42:55.810298776Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:42:55.810306701Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:42:55.810313795Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:43:00.827211182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:43:00.857191686Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:43:00.85732632Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:43:00.881595196Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:43:00.881637469Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:43:00.88165162Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:43:00.881660757Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:43:00.881669238Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:43:05.899484287Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:43:05.927362154Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:43:05.927452628Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:43:05.949392439Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:43:05.949437767Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:43:05.94945334Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:43:05.949463394Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:43:05.949470806Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:43:10.971546425Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:43:11.001050631Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:43:11.00114763Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:43:11.02689491Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:43:11.027314778Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:43:11.027362811Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:43:11.027399952Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:43:11.027443368Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:43:16.04515042Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:43:16.076845737Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:43:16.076938375Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:43:16.102988848Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:43:16.103035229Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:43:16.103048901Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:43:16.103070005Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:43:16.103078963Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:43:21.122638926Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:43:21.151599234Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:43:21.151688129Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:43:21.178175478Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:43:21.178225574Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:43:21.178687427Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:43:21.178708818Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:43:21.178720062Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:43:26.194171725Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:43:26.225052372Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:43:26.225148394Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:43:26.249839963Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:43:26.249888445Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:43:26.249922854Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:43:26.249955812Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:43:26.249972205Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:43:31.267357403Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:43:31.296363668Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:43:31.296595239Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:43:31.318442454Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:43:31.318495034Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:43:31.318510764Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:43:31.318520942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:43:31.31852906Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:43:36.334337267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:43:36.364060284Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:43:36.364151845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:43:36.385581466Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:43:36.385625357Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:43:36.385639377Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:43:36.385650531Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:43:36.38565971Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:43:41.401877507Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:43:41.430113507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:43:41.430206073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:43:41.454073338Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:43:41.454138566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:43:41.454153791Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:43:41.45416443Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:43:41.454173003Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:43:46.473294862Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:43:46.504292748Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:43:46.504405152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:43:46.52984617Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:43:46.529888539Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:43:46.529901953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:43:46.529913545Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:43:46.529922744Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:43:51.55218079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:43:51.579045381Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:43:51.579386926Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:43:51.60298138Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:43:51.603021081Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:43:51.60303538Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:43:51.603047155Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:43:51.603056688Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:43:56.621632489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:43:56.650748605Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:43:56.650842787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:43:56.675086457Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:43:56.675133257Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:43:56.675148478Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:43:56.675159252Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:43:56.675170168Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:44:01.737424292Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:44:01.774847049Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:44:01.77506504Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:44:01.857910472Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:44:01.85795634Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:44:01.857970454Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:44:01.857980991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:44:01.857994275Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:44:06.876968692Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:44:06.905158203Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:44:06.905270728Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:44:06.930352449Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:44:06.930411203Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:44:06.930426344Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:44:06.930436119Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:44:06.930444518Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:44:11.95272537Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:44:11.980540301Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:44:11.980650428Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:44:12.006586076Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:44:12.006636388Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:44:12.006653709Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:44:12.006664625Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:44:12.006671869Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:44:17.02557356Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:44:17.054871323Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:44:17.054980301Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:44:17.079107727Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:44:17.079153939Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:44:17.079183018Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:44:17.079193856Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:44:17.079202692Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:44:22.10074669Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:44:22.130626685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:44:22.130747166Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:44:22.15707425Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:44:22.15712108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:44:22.157136761Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:44:22.157147553Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:44:22.15715554Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:44:27.173286303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:44:27.205495912Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:44:27.205589602Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:44:27.227206175Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:44:27.227284525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:44:27.227298714Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:44:27.227308051Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:44:27.227317151Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:44:32.245305976Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:44:32.274747301Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:44:32.274838254Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:44:32.299608228Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:44:32.299650235Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:44:32.299701391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:44:32.299714865Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:44:32.299723262Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:44:37.314433891Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:44:37.345080176Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:44:37.34518914Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:44:37.368730284Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:44:37.368774703Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:44:37.368789764Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:44:37.36881007Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:44:37.368820201Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:44:42.38954981Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:44:42.418059479Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:44:42.418148432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:44:42.442341004Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:44:42.442388073Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:44:42.44240209Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:44:42.442411454Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:44:42.442422005Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:44:47.460626193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:44:47.491473935Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:44:47.491562287Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:44:47.516324255Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:44:47.51636562Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:44:47.516380167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:44:47.516391293Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:44:47.516402413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:44:52.53829123Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:44:52.568197034Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:44:52.568356224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:44:52.594554994Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:44:52.594599637Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:44:52.594613368Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:44:52.594625446Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:44:52.594634949Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:44:57.612271463Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:44:57.641833721Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:44:57.641941885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:44:57.666850409Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:44:57.666892114Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:44:57.666905925Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:44:57.666916231Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:44:57.666926785Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:45:02.688310853Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:45:02.718311479Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:45:02.718428495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:45:02.742567156Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:45:02.742608093Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:45:02.74262165Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:45:02.742633021Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:45:02.742642215Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:45:07.757291741Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:45:07.787562293Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:45:07.787650975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:45:07.811460398Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:45:07.81150634Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:45:07.811521195Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:45:07.811531115Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:45:07.811541527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:45:12.831814565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:45:12.862078377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:45:12.862175877Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:45:12.886974187Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:45:12.887024648Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:45:12.887042243Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:45:12.887051706Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:45:12.887058957Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:45:17.916692618Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:45:17.944230236Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:45:17.944412524Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:45:17.967641933Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:45:17.967687285Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:45:17.967702959Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:45:17.967713912Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:45:17.967722454Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:45:22.987897802Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:45:23.016575868Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:45:23.016682838Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:45:23.039138592Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:45:23.039185887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:45:23.039202366Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:45:23.03921347Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:45:23.039220991Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:45:28.054093855Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:45:28.086833475Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:45:28.087033925Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:45:28.110410526Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:45:28.110453101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:45:28.110466263Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:45:28.110475793Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:45:28.110486566Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:45:33.127095312Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:45:33.157967091Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:45:33.158076099Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:45:33.183634326Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:45:33.183676212Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:45:33.183692355Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:45:33.183703161Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:45:33.1837118Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:45:38.200323364Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:45:38.227905309Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:45:38.228044548Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:45:38.250895281Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:45:38.250937256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:45:38.250950434Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:45:38.25096039Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:45:38.250971032Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:45:43.266267088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:45:43.295287928Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:45:43.295387685Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:45:43.32096469Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:45:43.321006844Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:45:43.321021109Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:45:43.321033122Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:45:43.321041981Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:45:48.341109158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:45:48.37149682Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:45:48.37157991Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:45:48.39325079Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:45:48.393293597Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:45:48.393307361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:45:48.393343695Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:45:48.393353326Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:45:53.410062666Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:45:53.441408961Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:45:53.441501832Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:45:53.464622057Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:45:53.4646646Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:45:53.464680272Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:45:53.46469163Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:45:53.464700881Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:45:58.482380452Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:45:58.510944719Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:45:58.511069742Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:45:58.533589531Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:45:58.533635318Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:45:58.533650651Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:45:58.533660631Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:45:58.533670859Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:46:03.549304947Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:46:03.580295007Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:46:03.580389111Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:46:03.60380675Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:46:03.60395197Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:46:03.60397034Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:46:03.603980376Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:46:03.603998305Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:46:08.620914106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:46:08.651472627Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:46:08.651584706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:46:08.672839083Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:46:08.672881915Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:46:08.672896146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:46:08.672916476Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:46:08.672925852Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:46:13.688371351Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:46:13.717064556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:46:13.717175109Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:46:13.737601066Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:46:13.737656424Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:46:13.73767271Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:46:13.73782158Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T03:46:13.737911863Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:46:13.737925063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:46:18.759280746Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:46:18.788772204Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:46:18.788884679Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:46:18.811448653Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:46:18.811493688Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:46:18.811508671Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:46:18.811520195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:46:18.811529982Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:46:23.827445409Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:46:23.855876731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:46:23.855996839Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:46:23.882644697Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:46:23.882692189Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:46:28.898741128Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:46:28.927181771Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:46:28.927296455Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:46:28.949553873Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:46:28.949611538Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:46:28.949626544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:46:28.949636189Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:46:28.949643915Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:46:33.963001872Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:46:33.993396415Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:46:33.993515773Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:46:34.017747537Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:46:34.017794196Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:46:34.017808402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:46:34.017820541Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:46:34.017830164Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:46:39.03528338Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:46:39.063506663Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:46:39.063608692Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:46:39.086862395Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:46:39.086903337Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:46:39.086917163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:46:39.086928495Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:46:39.086938442Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:46:44.104436931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:46:44.132732377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:46:44.13282351Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:46:44.153430392Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:46:44.1534872Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:46:44.153503021Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:46:44.15351408Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:46:44.153522527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:46:49.168226548Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:46:49.199811169Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:46:49.199910514Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:46:49.225699674Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:46:49.225754227Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:46:49.225769596Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:46:49.225780824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:46:49.225789926Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:46:54.242125031Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:46:54.27056895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:46:54.270689283Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:46:54.294373169Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:46:54.294420636Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:46:54.294435406Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:46:54.294445609Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:46:54.294456479Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:46:59.310775019Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:46:59.33942071Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:46:59.339515273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:46:59.363732182Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:46:59.363778631Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:46:59.363793396Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:46:59.363803696Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:46:59.363814616Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:47:04.383679917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:47:04.411592834Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:47:04.411678963Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:47:04.43350381Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:47:04.433549123Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:47:04.433563686Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:47:04.433601178Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:47:04.433611114Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:47:09.451093738Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:47:09.478630954Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:47:09.480540325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:47:09.503423154Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:47:09.503466176Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:47:09.503480933Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:47:09.503520461Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:47:09.503529536Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:47:14.518886921Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:47:14.550405478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:47:14.550495509Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:47:14.572829978Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:47:14.57288211Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:47:14.572896901Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:47:14.572906625Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:47:14.572915248Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:47:19.591265494Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:47:19.622059886Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:47:19.622175253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:47:19.642890483Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:47:19.642932921Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:47:19.642947248Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:47:19.642958755Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:47:19.642968067Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:47:24.660027849Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:47:24.687790028Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:47:24.687884294Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:47:24.711031583Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:47:24.711075609Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:47:24.711089175Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:47:24.711098995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:47:24.711106859Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:47:29.726618085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:47:29.754466337Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:47:29.754555446Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:47:29.779411157Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:47:29.779459515Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:47:29.779473691Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:47:29.779483886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:47:29.779492292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:47:34.797501763Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:47:34.828282399Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:47:34.828383422Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:47:34.853019477Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:47:34.853061173Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:47:34.853093096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:47:34.853103613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:47:34.853112562Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:47:39.870298801Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:47:39.900206968Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:47:39.900338227Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:47:39.923734691Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:47:39.92379312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:47:39.923808227Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:47:39.923817767Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:47:39.923827575Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:47:44.940879039Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:47:44.971765308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:47:44.97188171Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:47:44.99324765Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:47:44.993317499Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:47:44.993335424Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:47:44.993362445Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:47:44.993372074Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:47:50.015723896Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:47:50.044069176Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:47:50.044170888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:47:50.066909507Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:47:50.066952086Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:47:50.066966096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:47:50.067001593Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:47:50.067011208Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:47:55.082852848Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:47:55.114734944Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:47:55.114834153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:47:55.139417653Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:47:55.139458076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:47:55.139470824Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:47:55.139481994Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:47:55.139491792Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:48:00.158841958Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:48:00.195515097Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:48:00.195627816Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:48:00.22659682Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:48:00.226643865Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:48:00.226659252Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:48:00.226672427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:48:00.226681514Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:48:05.244709009Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:48:05.276160096Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:48:05.276287765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:48:05.302253997Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:48:05.302307474Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:48:05.30233211Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:48:05.302342664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:48:05.302351476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:48:10.318669835Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:48:10.34904648Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:48:10.349154033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:48:10.370555407Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:48:10.370609855Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:48:10.370625136Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:48:10.370634542Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:48:10.370643116Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:48:15.388904522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:48:15.417723219Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:48:15.417827623Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:48:15.440098282Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:48:15.440138199Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:48:15.440152297Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:48:15.440164624Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:48:15.440174713Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:48:20.459104075Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:48:20.489088201Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:48:20.489182705Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:48:20.511093072Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:48:20.511149128Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:48:20.511163597Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:48:20.511173359Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:48:20.511181563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:48:25.525118069Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:48:25.555531457Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:48:25.555645297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:48:25.578190175Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:48:25.57825728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:48:25.578271442Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:48:25.578282287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:48:25.578292137Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:48:30.595916856Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:48:30.624394563Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:48:30.624612956Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:48:30.64716241Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:48:30.6472173Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:48:30.647231693Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:48:30.647291915Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:48:30.647301481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:48:35.667295271Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:48:35.697274042Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:48:35.697380518Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:48:35.721216874Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:48:35.721273299Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:48:35.721289971Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:48:35.721301882Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:48:35.721310951Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:48:40.73829429Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:48:40.766149935Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:48:40.766280791Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:48:40.79165523Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:48:40.791702455Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:48:40.79171988Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:48:40.791731007Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:48:40.791740913Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:48:45.807165829Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:48:45.838257371Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:48:45.83834806Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:48:45.862166607Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:48:45.862208121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:48:45.862222078Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:48:45.862244053Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:48:45.862253237Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:48:50.879303988Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:48:50.907547218Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:48:50.907643781Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:48:50.934852659Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:48:50.934913584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:48:50.934986656Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:48:50.934999032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:48:50.935007967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:48:55.952907192Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:48:55.984661291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:48:55.984772566Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:48:56.009759873Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:48:56.009830043Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:48:56.009845279Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:48:56.009854909Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:48:56.009862985Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:49:01.028784534Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:49:01.05690633Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:49:01.057025698Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:49:01.079833542Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:49:01.07987481Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:49:01.079888376Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:49:01.079899644Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:49:01.079908262Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:49:06.100266435Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:49:06.129925011Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:49:06.130025864Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:49:06.154211489Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:49:06.15426473Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:49:06.154279058Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:49:06.154289016Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:49:06.15429862Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:49:11.174507514Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:49:11.204817599Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:49:11.204918992Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:49:11.228857065Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:49:11.228917763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:49:11.228932054Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:49:11.228982377Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:49:11.228992499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:49:16.244641155Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:49:16.272262659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:49:16.272374329Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:49:16.294106578Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:49:16.294158427Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:49:16.294174872Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:49:16.294295604Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:49:16.294308556Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:49:21.312124256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:49:21.340876958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:49:21.340966768Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:49:21.363049103Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:49:21.363091902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:49:21.363106713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:49:21.363116878Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:49:21.36312579Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:49:26.382527189Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:49:26.411575963Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:49:26.411674662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:49:26.43501825Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:49:26.4350597Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:49:26.435075023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:49:26.435085356Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:49:26.435094481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:49:31.455307534Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:49:31.482692272Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:49:31.482810415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:49:31.506430978Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:49:31.506475566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:49:31.506489355Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:49:31.506500256Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:49:31.506509346Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:49:36.52426791Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:49:36.554287883Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:49:36.554375944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:49:36.574515274Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:49:36.574564487Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:49:36.574578688Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:49:36.574589222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:49:36.574670778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:49:41.594031272Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:49:41.622797527Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:49:41.622925392Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:49:41.648436752Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:49:41.648621966Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:49:41.648642681Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:49:41.648653664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:49:41.648662677Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:49:46.667226593Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:49:46.697224718Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:49:46.697725022Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:49:46.721743489Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:49:46.72180998Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:49:46.721824817Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:49:46.721833768Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:49:46.721842506Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:49:51.740424126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:49:51.77148745Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:49:51.771613893Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:49:51.794559088Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:49:51.794603367Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:49:51.794616693Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:49:51.794627236Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:49:51.794635768Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:49:56.813550834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:49:56.843668446Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:49:56.843775655Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:49:56.867379673Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:49:56.867423924Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:49:56.86743825Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:49:56.867448066Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:49:56.867458926Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:50:01.890465775Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:50:01.952433075Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:50:01.953283753Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:50:02.03439951Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:50:02.034561874Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:50:02.034579714Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:50:02.034590031Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:50:02.034599315Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:50:07.055749334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:50:07.086473001Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:50:07.086565804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:50:07.109338257Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:50:07.109383496Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:50:07.109398035Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:50:07.109408518Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:50:07.109417198Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:50:12.127012888Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:50:12.156163859Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:50:12.156304086Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:50:12.17781464Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:50:12.177853763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:50:12.177868406Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:50:12.177878534Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:50:12.177887092Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:50:17.196216119Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:50:17.227949072Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:50:17.228053092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:50:17.248473091Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:50:17.24854142Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:50:17.248557335Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:50:17.248569439Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:50:17.248581007Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:50:22.26071191Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:50:22.292837291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:50:22.292965342Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:50:22.31554339Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:50:22.315583472Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:50:22.315597772Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:50:22.315609725Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:50:22.315618428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:50:27.329503798Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:50:27.359172433Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:50:27.359324543Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:50:27.380084964Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:50:27.380126231Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:50:27.380140784Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:50:27.380151391Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:50:27.380161135Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:50:32.395444316Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:50:32.426081727Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:50:32.426204067Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:50:32.446774742Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:50:32.446828212Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:50:32.446842789Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:50:32.446852305Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:50:32.446861469Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:50:37.463111026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:50:37.491250319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:50:37.491373777Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:50:37.512205852Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:50:37.51225981Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:50:37.512274369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:50:37.512284532Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:50:37.512292858Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:50:42.531270444Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:50:42.559048385Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:50:42.559157522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:50:42.582011443Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:50:42.582051409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:50:42.582064582Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:50:42.582074238Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:50:42.582083558Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:50:47.604281582Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:50:47.631929064Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:50:47.632046907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:50:47.657132787Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:50:47.657213845Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:50:47.657230064Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:50:47.657278646Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:50:47.657288055Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:50:52.677219469Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:50:52.70650041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:50:52.706646008Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:50:52.727658207Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:50:52.727698772Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:50:52.727712105Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:50:52.727722603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:50:52.72773198Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:50:57.74528571Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:50:57.775131943Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:50:57.775261767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:50:57.79732598Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:50:57.797372815Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:50:57.797387389Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:50:57.797420838Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:50:57.797430222Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:51:02.818030015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:51:02.84602511Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:51:02.846136805Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:51:02.866173167Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:51:02.866222084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:51:02.866250573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:51:02.86626313Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:51:02.866273106Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:51:07.881287996Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:51:07.910015476Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:51:07.910124254Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:51:07.931537728Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:51:07.931579305Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:51:07.931593931Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:51:07.9316065Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:51:07.931616192Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:51:12.950973004Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:51:12.978510921Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:51:12.978618546Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:51:12.999457017Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:51:12.99951341Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:51:12.999528897Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:51:12.999540258Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:51:12.999548607Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:51:18.020148879Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:51:18.048709933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:51:18.048832275Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:51:18.075001495Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:51:18.075403849Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:51:18.075572264Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:51:18.075719245Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:51:18.0758148Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:51:23.094370407Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:51:23.126265297Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:51:23.126367539Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:51:23.146933916Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:51:23.146993754Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:51:23.147008197Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:51:23.147018373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:51:23.147026831Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:51:28.167102472Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:51:28.196877475Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:51:28.196995017Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:51:28.219563101Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:51:28.219622403Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:51:28.219636467Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:51:28.219646502Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:51:28.219656373Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:51:33.236211132Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:51:33.263977335Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:51:33.264091496Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:51:33.284146813Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:51:33.28418923Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:51:33.284203031Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:51:33.28421393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:51:33.284223998Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:51:38.301310934Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:51:38.3296259Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:51:38.329728317Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:51:38.355956773Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:51:38.355999558Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:51:38.356025867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:51:38.356036965Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:51:38.356045276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:51:43.374067259Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:51:43.405004623Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:51:43.405121247Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:51:43.426753409Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:51:43.426798429Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:51:43.426812541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:51:43.426823125Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:51:43.426832597Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:51:48.446208069Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:51:48.474695153Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:51:48.474807707Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:51:48.496151178Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:51:48.496193287Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:51:48.496206403Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:51:48.496217272Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:51:48.496226492Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:51:53.51146317Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:51:53.540034145Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:51:53.540143754Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:51:53.560145244Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:51:53.560193386Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:51:53.560207554Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:51:58.576692948Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:51:58.608103129Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:51:58.608194659Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:51:58.632978173Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:51:58.633017807Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:51:58.633032552Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:51:58.633044068Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:51:58.633053683Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:52:03.649124539Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:52:03.679108763Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:52:03.679209665Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:52:03.703348629Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:52:03.70339504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:52:03.703410234Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:52:03.703421126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:52:03.703431062Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:52:08.71953558Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:52:08.750674309Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:52:08.750780026Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:52:08.772968125Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:52:08.773014255Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:52:08.773027894Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:52:08.773038328Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:52:08.773047895Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:52:13.788346188Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:52:13.819441554Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:52:13.819536191Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:52:13.842185086Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:52:13.842229076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:52:13.842266369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:52:13.842276657Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:52:13.842285151Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:52:18.85835211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:52:18.891120405Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:52:18.891221153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:52:18.913846036Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:52:18.913886628Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:52:18.913916953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:52:18.913927808Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:52:18.913936854Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:52:23.93228192Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:52:23.959849147Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:52:23.959961015Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:52:23.982338006Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:52:23.982379873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:52:23.982393018Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:52:23.982403529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:52:23.982411968Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:52:28.99842887Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:52:29.02740292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:52:29.027518222Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:52:29.048705472Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:52:29.048748995Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:52:34.061388029Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:52:34.090120219Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:52:34.090216896Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:52:34.115972141Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:52:34.116016008Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:52:34.116029591Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:52:34.116047315Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:52:34.116056528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:52:39.13461524Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:52:39.163967881Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:52:39.164080587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:52:39.185671647Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:52:39.185713944Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:52:39.185727976Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:52:39.185809676Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:52:39.185819366Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:52:44.201619236Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:52:44.231376947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:52:44.231494084Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:52:44.254012791Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:52:44.254070873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:52:44.25408458Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:52:44.254095079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:52:44.254103195Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:52:49.269074826Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:52:49.299130406Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:52:49.299223098Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:52:49.319040433Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:52:49.31908278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:52:49.319097517Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:52:49.319109106Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:52:49.3191183Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:52:54.335745903Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:52:54.366092825Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:52:54.366209903Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:52:54.387562603Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:52:54.387606125Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:52:54.387620914Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:52:54.387631482Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:52:54.387641171Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:52:59.403480056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:52:59.431450123Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:52:59.431568004Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:52:59.452343701Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:52:59.452387229Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:52:59.452400686Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:52:59.452410819Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:52:59.452419395Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:53:04.470553554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:53:04.498740839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:53:04.49885195Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:53:04.52165362Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:53:04.52169909Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:53:04.521727435Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:53:04.521738915Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:53:04.521748359Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:53:09.539300618Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:53:09.568883793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:53:09.569000591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:53:09.593479427Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:53:09.593525916Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:53:09.593540678Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:53:09.593549889Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:53:09.59355852Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:53:14.612297691Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:53:14.64102912Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:53:14.641152238Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:53:14.668892121Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:53:14.668959887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:53:14.668974375Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:53:14.66899499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:53:14.669071816Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:53:19.68953343Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:53:19.719260964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:53:19.719390884Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:53:19.741800686Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:53:19.741841968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:53:19.74185557Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:53:19.741866447Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:53:19.741874755Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:53:24.759607041Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:53:24.791890638Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:53:24.792004651Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:53:24.81674946Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:53:24.816794083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:53:24.816809307Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:53:24.816820883Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:53:24.816830107Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:53:29.833280677Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:53:29.862532335Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:53:29.862618719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:53:29.885187063Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:53:29.885229605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:53:29.885256681Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:53:29.885268081Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:53:29.885277863Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:53:34.901120829Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:53:34.9305518Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:53:34.930645503Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:53:34.95359803Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:53:34.95365623Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:53:34.953685465Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:53:34.953695814Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:53:34.953703999Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:53:39.972977975Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:53:40.003779733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:53:40.003903624Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:53:40.027859141Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:53:40.027899513Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:53:40.027913953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:53:40.027926093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:53:40.027935361Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:53:45.047854208Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:53:45.078262005Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:53:45.078360333Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:53:45.100028841Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:53:45.100077811Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:53:45.100132571Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:53:45.10015427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:53:45.100164338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:53:50.122533816Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:53:50.151057197Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:53:50.151154285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:53:50.174774328Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:53:50.174818014Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:53:50.174833122Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:53:50.174844517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:53:50.174853524Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:53:55.19228807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:53:55.220671Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:53:55.220768094Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:53:55.24202362Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:53:55.242079866Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:53:55.242094512Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:53:55.242105294Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:53:55.242114065Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:54:00.272367362Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:54:00.325033934Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:54:00.325155759Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:54:00.349716315Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:54:00.34976015Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:54:00.349773582Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:54:00.349784258Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:54:00.349793061Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:54:05.367302421Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:54:05.3962053Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:54:05.396326295Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:54:05.419890573Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:54:05.419931007Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:54:05.419944696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:54:05.419955892Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:54:05.419964413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:54:10.43731232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:54:10.467915508Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:54:10.468038072Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:54:10.489182104Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:54:10.489228498Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:54:10.489258083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:54:10.489271857Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:54:10.489279944Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:54:15.505291651Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:54:15.534253045Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:54:15.534341022Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:54:15.558591477Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:54:15.558637581Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:54:15.558652968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:54:15.558664969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:54:15.558674711Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:54:20.577194743Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:54:20.607190133Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:54:20.607312175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:54:20.629057723Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:54:20.629099592Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:54:20.629130849Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:54:20.629141382Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:54:20.629149954Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:54:25.643545596Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:54:25.674403145Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:54:25.674493922Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:54:25.695377107Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:54:25.695421813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:54:25.695435361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:54:25.695446194Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:54:25.695456545Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:54:30.711945337Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:54:30.741410682Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:54:30.74152791Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:54:30.761808474Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:54:30.761867263Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:54:30.761881593Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:54:30.761892418Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:54:30.76190225Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:54:35.779857987Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:54:35.809263386Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:54:35.809380336Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:54:35.83176013Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:54:35.831819108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:54:35.831833948Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:54:35.831843661Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:54:35.831852325Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:54:40.852062242Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:54:40.881503324Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:54:40.881595226Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:54:40.901570858Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:54:40.901612396Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:54:45.918471964Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:54:45.947674188Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:54:45.947760924Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:54:45.967585343Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:54:45.967627162Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:54:45.967640246Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:54:45.967651149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:54:45.967661854Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:54:50.984283231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:54:51.013951763Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:54:51.014078432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:54:51.038171644Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:54:51.03821561Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:54:51.038229827Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:54:51.038284583Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:54:51.038294451Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:54:56.056018756Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:54:56.086950164Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:54:56.087049838Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:54:56.111483481Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:54:56.111530231Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:54:56.111544702Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:54:56.111555304Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:54:56.111563679Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:55:01.127508516Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:55:01.15952064Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:55:01.15963466Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:55:01.18610537Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:55:01.186149301Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:55:01.186163536Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:55:01.186173613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:55:01.186181634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:55:06.203998723Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:55:06.233467791Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:55:06.233590435Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:55:06.259059377Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:55:06.259105528Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:55:06.259122425Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:55:06.259133731Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:55:06.259144074Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:55:11.278369461Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:55:11.307096297Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:55:11.30717819Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:55:11.326564492Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:55:11.326607985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:55:11.326639513Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:55:16.345585485Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:55:16.376801749Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:55:16.376920026Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:55:16.402561016Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:55:16.40261464Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:55:16.402630299Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:55:16.402640692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:55:16.402648708Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:55:21.423275293Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:55:21.45201235Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:55:21.452102765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:55:21.475798859Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:55:21.475857569Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:55:21.475873079Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:55:21.475883252Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:55:21.475891904Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:55:26.490695623Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:55:26.521748239Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:55:26.521864818Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:55:26.546626793Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:55:26.546685579Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:55:26.546700859Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:55:26.546735041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:55:26.546752293Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:55:31.564207532Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:55:31.593699441Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:55:31.596381591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:55:31.619360732Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:55:31.619400686Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:55:31.619436386Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:55:31.619446247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:55:31.619454661Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:55:36.635279447Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:55:36.664757148Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:55:36.664849624Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:55:36.6877518Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:55:36.687794035Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:55:36.687807671Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:55:36.687818025Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:55:41.704979783Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:55:41.73221691Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:55:41.732327111Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:55:41.756691486Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:55:41.75673379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:55:41.756748896Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:55:41.756759627Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:55:41.756769996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:55:46.775604026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:55:46.807126534Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:55:46.807316822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:55:46.829284284Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:55:46.829326852Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:55:46.829342548Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:55:46.829351933Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:55:46.82936168Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:55:51.848819593Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:55:51.876562415Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:55:51.876686336Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:55:51.898496975Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:55:51.898556459Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:55:51.898570964Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:55:51.898583648Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:55:51.898592354Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:55:56.921856318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:55:56.960338953Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:55:56.96066802Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:55:56.989741698Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T03:55:56.989782996Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:55:56.989796597Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:55:56.989835847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:55:56.989845449Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:56:06.948094171Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:56:07.086431679Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:56:07.086561839Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:56:07.092312968Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:56:07.095452801Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:07.095809862Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:07.095865507Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:56:07.095883161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:56:07.095895195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:56:07.095915638Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:56:12.114329356Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:56:12.144415526Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:56:12.144680982Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:56:12.147106807Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:56:12.147792425Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:12.148325131Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:12.148776344Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:56:12.148809158Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:56:12.148823149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:56:12.148933841Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:56:17.16227594Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:56:17.191304578Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:56:17.191419548Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:56:17.192940729Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:56:17.19336275Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:17.193702462Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:17.193741989Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:56:17.193756032Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:56:17.19376856Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:56:17.19377821Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:56:22.214386211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:56:22.244635032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:56:22.244777485Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:56:22.246999721Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:56:22.247216502Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:22.247422551Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:22.247456907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:56:22.247472765Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:56:22.247487322Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:56:22.247498314Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:56:27.263312266Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:56:27.293123059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:56:27.293510614Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:56:27.295143898Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:56:27.295641261Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:27.296078752Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:27.296184079Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:56:27.296203968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:56:27.296218179Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:56:27.296229666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:56:32.315640862Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:56:32.346646667Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:56:32.346759408Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:56:32.348848138Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:56:32.349485049Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:32.350018355Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:32.35005255Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:56:32.350069364Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:56:32.350082752Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:56:32.350094591Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:56:37.366006281Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:56:37.402784548Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:56:37.402914385Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:56:37.404714413Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:56:37.404964586Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:37.405155938Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:37.405331761Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:56:37.405362553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:56:37.405374893Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:56:37.405385987Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:56:42.426037172Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:56:42.455354964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:56:42.455461031Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:56:42.45829968Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:56:42.458847503Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:42.459054782Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:42.459099311Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:56:42.459115057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:56:42.459127799Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:56:42.459371224Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:56:47.474034321Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:56:47.503312309Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:56:47.503424989Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:56:47.505536797Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:56:47.506210495Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:47.50640909Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:47.506439454Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:56:47.506454248Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:56:47.506468417Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:56:47.506480062Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:56:52.522335713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:56:52.551207534Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:56:52.551339022Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:56:52.553033338Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:56:52.553512354Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:52.554470881Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:52.55452597Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:56:52.554542149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:56:52.554554275Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:56:52.554595018Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:56:57.569320734Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:56:57.59751461Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:56:57.597655491Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:56:57.598847985Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:56:57.599127351Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:57.599385514Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:56:57.59944622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:56:57.599462861Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:56:57.599475712Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:56:57.599920471Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:57:02.619894094Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:57:02.64742066Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:57:02.647514018Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:57:02.64938605Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:57:02.649966703Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:02.650415188Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:02.650643071Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:57:02.650664921Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:57:02.650679425Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:57:02.650690832Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:57:07.66609834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:57:07.694956643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:57:07.695045202Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:57:07.696711241Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:57:07.697160556Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:07.697463586Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:07.697494705Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:57:07.697510406Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:57:07.697523622Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:57:07.69753593Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:57:12.71442784Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:57:12.742311571Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:57:12.742421954Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:57:12.743529575Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:57:12.743756925Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:12.743971464Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:12.744021746Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:57:12.744038766Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:57:12.744051534Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:57:12.744557375Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:57:17.759926238Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:57:17.789098545Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:57:17.789223096Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:57:17.790291814Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:57:17.790480259Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:17.790627178Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:17.790649515Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:57:17.790663779Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:57:17.790677619Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:57:17.790688991Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:57:22.812269059Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:57:22.840270928Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:57:22.84036136Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:57:22.84152731Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:57:22.841729725Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:22.841888117Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:22.841910949Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:57:22.841926165Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:57:22.841965132Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:57:22.841977047Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:57:27.856154556Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:57:27.884730732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:57:27.88482116Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:57:27.886057742Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:57:27.886275785Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:27.88645828Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:27.886483967Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:57:27.886498564Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:57:27.886511099Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:57:27.886521873Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:57:32.905496457Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:57:32.936581277Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:57:32.936687759Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:57:32.938322587Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:57:32.938863213Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:32.939308807Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:32.93934192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:57:32.939357337Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:57:32.939370558Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:57:32.939382523Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:57:37.956293206Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:57:37.984024525Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:57:37.984112933Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:57:37.985314801Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:57:37.985512748Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:37.985656064Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:37.985708639Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:57:37.985723671Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:57:37.985760713Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:57:37.98577339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:57:43.000004908Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:57:43.031349617Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:57:43.031460194Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:57:43.034463083Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:57:43.034662712Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:43.034800006Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:43.034844921Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:57:43.034860211Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:57:43.034873494Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:57:43.035260766Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:57:48.050115987Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:57:48.077972665Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:57:48.078063427Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:57:48.080612144Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:57:48.081169589Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:48.081628228Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:48.081884998Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:57:48.081907582Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:57:48.081920545Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:57:48.081932347Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:57:53.096079478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:57:53.126439379Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:57:53.126941065Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:57:53.128174065Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:57:53.128834209Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:53.129291712Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:57:53.129553374Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:57:53.12977557Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:57:53.130305734Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:57:53.130914368Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:57:58.147190594Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:57:58.177268816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:57:58.177385938Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:57:58.17849332Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:57:58.178723415Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:03.199716844Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:58:03.231108624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:58:03.231222614Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:58:03.233006167Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:58:03.233562845Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:03.233968139Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:03.234013936Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:58:03.234030558Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:58:03.234044726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:58:03.234473311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:58:08.249700374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:58:08.281162865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:58:08.281265062Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:58:08.283206511Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:58:08.283721226Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:08.283881768Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:08.283906063Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:58:08.283920864Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:58:08.283935654Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:58:08.283947063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:58:13.302290267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:58:13.330865604Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:58:13.330944298Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:58:13.33209919Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:58:13.332346175Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:13.332579358Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:13.332611275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:58:13.332626239Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:58:13.332640356Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:58:13.332652127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:58:18.349300395Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:58:18.378199624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:58:18.378327965Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:58:18.379472877Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:58:18.379686647Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:18.379866387Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:18.379894378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:58:18.37991866Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:58:18.379931769Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:58:18.379943197Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:58:23.399296664Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:58:23.427780093Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:58:23.42786764Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:58:23.430029721Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:58:28.446400955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:58:28.476195368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:58:28.476315949Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:58:28.477566588Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:58:28.477865724Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:28.478103719Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:28.478132412Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:58:28.478146502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:58:28.478157209Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:58:28.47816715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:58:33.497292139Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:58:33.528313137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:58:33.528573805Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:58:33.530274425Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:58:33.530522961Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:33.530704784Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:33.530736738Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:58:33.530753471Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:58:33.530766709Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:58:33.530778967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:58:38.548676904Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:58:38.577623966Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:58:38.577740521Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:58:38.578816687Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:58:38.579057243Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:38.579246063Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:38.579275122Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:58:38.579290108Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:58:38.579301007Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:58:38.579311339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:58:43.600690427Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:58:43.630086993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:58:43.63019935Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:58:43.631971034Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:58:43.632399104Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:43.632961492Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:43.632994897Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:58:43.633010455Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:58:43.633024299Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:58:43.633036305Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:58:48.652634832Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:58:48.683264066Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:58:48.683379516Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:58:48.685262845Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:58:48.685654795Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:48.686262966Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:48.686306813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:58:48.686322065Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:58:48.686335682Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:58:48.686347135Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:58:53.701780432Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:58:53.733324976Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:58:53.733427325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:58:53.734642542Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:58:53.734894592Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:53.735096748Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:53.735125306Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:58:53.735168228Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:58:53.735182107Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:58:53.735192397Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:58:58.751225196Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:58:58.785917176Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:58:58.78603347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:58:58.787378086Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:58:58.78759663Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:58.787740832Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:58:58.787764033Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:58:58.787778682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:58:58.787793552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:58:58.787805456Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:59:03.808886209Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:59:03.83957394Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:59:03.839666628Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:59:03.841193506Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:59:03.841456981Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:03.841625851Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:03.841678755Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:59:03.841694105Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:59:03.841730732Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:59:03.841742445Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:59:08.859274086Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:59:08.887477089Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:59:08.887578173Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:59:08.88917724Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:59:08.889629547Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:08.889829784Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:08.889882199Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:59:08.889898191Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:59:08.889910845Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:59:08.890285384Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:59:13.906621923Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:59:13.935891832Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:59:13.935998222Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:59:13.937000083Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:59:13.937191381Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:13.937384537Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:13.937423852Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:59:13.937440269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:59:13.937451404Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:59:13.937921324Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:59:18.95486998Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:59:18.986751809Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:59:18.986853036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:59:18.988749511Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:59:18.989354929Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:18.989842737Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:18.99006069Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:59:18.990081881Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:59:18.990095527Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:59:18.990107858Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:59:24.0035251Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:59:24.031853149Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:59:24.031959018Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:59:24.033204286Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:59:24.033441974Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:24.033628471Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:24.033667318Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:59:24.033682756Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:59:24.033697825Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:59:24.034066278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:59:29.052533369Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:59:29.082686086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:59:29.082794183Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:59:29.083826075Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:59:29.084017541Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:29.084173692Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:29.084206866Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:59:29.084221512Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:59:29.084683383Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:59:29.084701258Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:59:34.100499537Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:59:34.127924198Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:59:34.128098325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:59:34.129342428Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:59:34.129535923Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:34.129699641Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:34.129753333Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:59:34.129768167Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:59:34.1297806Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:59:34.129904855Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:59:39.145719693Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:59:39.175973969Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:59:39.176059362Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:59:39.178048367Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:59:44.196290611Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:59:44.224080283Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:59:44.224191134Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:59:44.225758584Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:59:44.226222387Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:44.226605113Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:44.226638288Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:59:44.226654789Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:59:44.226699746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:59:44.226711282Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:59:49.244171927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:59:49.274488764Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:59:49.274594491Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:59:49.276173915Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:59:49.276613402Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:49.276951225Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:49.277002873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:59:49.277018396Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:59:49.277064515Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:59:49.277075792Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:59:54.295388513Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:59:54.324118876Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:59:54.324208498Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:59:54.325921461Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:59:54.326380302Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:54.326834115Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:54.326868888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:59:54.326883575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:59:54.326906718Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:59:54.326918365Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T03:59:59.345823917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T03:59:59.372858694Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T03:59:59.372984551Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T03:59:59.374043365Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T03:59:59.37425795Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:59.374420348Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T03:59:59.374444183Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T03:59:59.37445951Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T03:59:59.374472618Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T03:59:59.374484377Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:00:04.394263867Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:00:04.425440309Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:00:04.425550093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:00:04.427255275Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:00:04.427764575Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:04.428134876Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:04.428263918Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:00:04.428287049Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:00:04.428300394Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:00:04.42831071Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:00:09.445611158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:00:09.473078962Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:00:09.473171349Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:00:09.474808834Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:00:09.475357527Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:09.47579932Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:09.475916344Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:00:09.475959149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:00:09.476154289Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:00:09.476168522Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:00:14.494179268Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:00:14.523289634Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:00:14.523394973Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:00:14.524996019Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:00:14.525411988Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:14.525899614Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:14.525932064Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:00:14.525946399Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:00:14.525960073Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:00:14.525971329Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:00:19.543441732Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:00:19.573060504Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:00:19.573188992Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:00:19.574706959Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:00:19.574895149Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:19.575080295Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:19.575109142Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:00:19.575152791Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:00:19.575166113Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:00:19.575177465Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:00:24.596110555Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:00:24.628982165Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:00:24.629102949Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:00:24.630790534Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:00:24.631442223Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:24.631978502Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:24.632101788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:00:24.632139809Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:00:24.632154264Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:00:24.632166856Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:00:29.650276915Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:00:29.681940934Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:00:29.682063147Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:00:29.683188868Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:00:29.683419176Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:29.683575404Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:29.683604248Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:00:29.683619377Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:00:29.683657104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:00:29.683669573Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:00:34.699744355Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:00:34.73008826Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:00:34.730181993Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:00:34.732641627Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:00:34.732865737Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:34.733048867Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:34.73308002Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:00:34.733096563Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:00:34.733108892Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:00:34.733119174Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:00:39.748646064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:00:39.778265945Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:00:39.778397474Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:00:39.779522714Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:00:39.779742666Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:39.779922958Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:39.779957567Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:00:39.779973169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:00:39.780004412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:00:39.780016424Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:00:44.805145021Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:00:44.834036302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:00:44.834148777Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:00:44.835323179Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:00:44.835596579Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:44.835808451Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:44.835849308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:00:44.835864173Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:00:44.835928467Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:00:44.835939249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:00:49.854473978Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:00:49.884567553Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:00:49.884681964Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:00:49.885756258Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:00:49.885936189Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:49.886084868Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:49.886128868Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:00:49.886143914Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:00:49.886156387Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:00:49.886167668Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:00:54.908301959Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:00:54.936952409Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:00:54.93704785Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:00:54.938190748Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:00:54.93840935Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:54.938561904Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:54.938589912Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:00:54.938605412Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:00:54.938620142Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:00:54.938631998Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:00:59.954086348Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:00:59.984746239Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:00:59.984862186Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:00:59.98643574Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:00:59.986676837Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:59.986882431Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:00:59.986918338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:00:59.986934304Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:00:59.986948093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:00:59.986959722Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:01:05.004168855Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:01:05.035909262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:01:05.036006417Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:01:05.037704235Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:01:05.038138926Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:05.03859831Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:05.038634214Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:01:05.038649029Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:01:05.038664207Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:01:05.03867709Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:01:10.053521422Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:01:10.082683569Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:01:10.082773451Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:01:10.083762636Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:01:10.083958458Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:10.0841161Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:10.084161874Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:01:10.084176348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:01:10.084189392Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:01:10.084303824Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:01:15.102795296Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:01:15.134354535Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:01:15.134486132Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:01:15.135840562Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:01:15.136054222Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:15.136247845Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:15.136295651Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:01:15.136311418Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:01:15.136371953Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:01:15.136384165Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:01:20.158296665Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:01:20.183855158Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:01:20.183951767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:01:20.185475334Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:01:20.185808943Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:20.186066303Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:20.186141696Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:01:20.186157768Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:01:20.186170593Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:01:20.186190075Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:01:25.207088726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:01:25.237404023Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:01:25.237523544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:01:25.240202632Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:01:25.240560612Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:25.240761729Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:25.240794034Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:01:25.240842455Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:01:25.240857401Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:01:25.24086956Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:01:30.256127511Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:01:30.285247329Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:01:30.285419899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:01:30.286550754Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:01:30.286731535Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:30.286890469Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:30.286918157Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:01:30.286932737Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:01:30.286946406Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:01:30.286957624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:01:35.304591597Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:01:35.334740571Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:01:35.334870641Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:01:35.3372828Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:01:35.337515534Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:35.337756633Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:35.337802958Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:01:35.33781877Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:01:35.33782995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:01:35.337839085Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:01:40.357256373Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:01:40.385531103Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:01:40.385633074Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:01:40.386734554Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:01:40.386899884Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:40.387035813Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:40.387058736Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:01:40.387073999Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:01:40.387087185Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:01:40.38709884Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:01:45.408285588Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:01:45.437719431Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:01:45.437805967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:01:45.438840156Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:01:45.439069453Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:45.439289825Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:45.43932032Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:01:45.439337241Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:01:45.43935015Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:01:45.439361466Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:01:50.457561658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:01:50.486345301Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:01:50.486460614Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:01:50.487432656Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:01:50.487631159Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:50.487811997Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:50.487854813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:01:50.487871855Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:01:50.487884573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:01:50.4883814Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:01:55.509299825Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:01:55.538368566Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:01:55.538488228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:01:55.540796805Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:01:55.541262277Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:55.541472265Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:01:55.541504509Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:01:55.541519454Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:01:55.541532937Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:01:55.5415453Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:02:00.557354234Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:02:00.585615242Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:02:00.585706542Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:02:00.588801522Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:02:00.589412512Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:00.589774029Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:00.589801288Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:02:00.589816035Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:02:00.589828785Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:02:00.58984036Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:02:05.610324668Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:02:05.640161745Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:02:05.640297166Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:02:05.641545981Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:02:05.64174724Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:05.641886628Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:05.641910112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:02:05.641924712Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:02:05.641977057Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:02:05.641989264Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:02:10.656134632Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:02:10.685209817Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:02:10.685323521Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:02:10.686325484Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:02:10.686511899Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:10.68668635Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:10.686709871Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:02:10.686725525Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:02:10.686738724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:02:10.686750373Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:02:15.703147125Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:02:15.732748899Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:02:15.732852462Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:02:15.734025943Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:02:15.73425034Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:15.734452555Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:15.734491041Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:02:15.734506688Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:02:15.734519937Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:02:15.734888186Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:02:20.751597934Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:02:20.779194917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:02:20.779331899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:02:20.780393208Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:02:20.780742116Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:20.78090985Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:20.780951184Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:02:20.7809672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:02:20.781035227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:02:20.78105079Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:02:25.800397298Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:02:25.831066726Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:02:25.831176639Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:02:25.832200999Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:02:25.832421338Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:25.832712422Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:25.832743661Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:02:25.8327617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:02:25.832774798Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:02:25.83278647Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:02:30.850006687Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:02:30.87951029Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:02:30.879632047Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:02:30.880835393Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:02:30.881038209Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:30.881203444Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:30.881272301Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:02:30.881288188Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:02:30.881300197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:02:30.881309938Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:02:35.901290489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:02:35.929464444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:02:35.929572808Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:02:35.930737807Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:02:35.930937003Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:35.931096847Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:35.931136214Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:02:35.931151972Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:02:35.93116449Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:02:35.931539654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:02:40.946269337Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:02:40.974117031Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:02:40.974203438Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:02:40.97536987Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:02:40.975649178Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:40.975826681Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:40.975865523Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:02:40.975880502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:02:40.975893152Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:02:40.975914844Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:02:45.993083721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:02:46.023848619Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:02:46.023953566Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:02:46.025280071Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:02:46.025606941Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:46.025842853Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:46.025899252Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:02:46.025915701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:02:46.02593938Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:02:46.025951778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:02:51.046003025Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:02:51.077081637Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:02:51.077195244Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:02:51.07876439Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:02:51.07921151Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:51.079391645Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:51.079422887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:02:51.079438493Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:02:51.079452588Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:02:51.079464122Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:02:56.10185764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:02:56.134706188Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:02:56.134784629Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:02:56.135803515Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:02:56.136002543Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:56.136177575Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:02:56.136216726Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:02:56.136232053Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:02:56.136257726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:02:56.136268872Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:03:01.154834644Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:03:01.184389909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:03:01.184638922Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:03:01.185854235Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:03:01.186104249Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:01.18628265Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:01.186314988Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:03:01.186330133Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:03:01.186342139Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:03:01.186351456Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:03:06.205549573Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:03:06.235954449Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:03:06.236046239Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:03:06.237576353Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:03:06.237881803Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:06.238115754Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:06.238151898Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:03:06.238166744Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:03:06.238179473Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:03:06.238191513Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:03:11.253900681Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:03:11.283907454Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:03:11.283999316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:03:11.285339069Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:03:11.285540159Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:11.285738194Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:11.285767595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:03:11.285783419Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:03:11.285797093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:03:11.285809193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:03:16.303301693Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:03:16.332169084Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:03:16.33230962Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:03:16.333601245Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:03:16.333784384Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:16.333944999Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:16.334014797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:03:16.33403066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:03:16.334043412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:03:16.334406039Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:03:21.350936819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:03:21.378464131Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:03:21.378584063Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:03:21.379745894Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:03:21.380015749Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:21.380230965Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:21.380279076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:03:21.380294558Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:03:21.380307398Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:03:21.380316861Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:03:26.400035053Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:03:26.429785126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:03:26.429871579Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:03:26.430955346Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:03:26.431191778Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:26.431424846Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:26.431453948Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:03:26.431468937Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:03:26.431480841Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:03:26.431490647Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:03:31.447751823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:03:31.478438092Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:03:31.478566706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:03:31.480561599Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:03:31.481076907Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:31.481501033Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:31.481736415Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:03:31.481890044Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:03:31.482010841Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:03:31.482127295Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:03:36.501633273Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:03:36.533383598Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:03:36.533473842Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:03:36.534526535Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:03:36.534720719Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:36.534892704Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:36.534915685Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:03:36.534931568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:03:36.534944788Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:03:36.534956471Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:03:41.554545878Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:03:41.583186398Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:03:41.583292194Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:03:41.584589858Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:03:41.584854951Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:41.585049256Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:46.605373386Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:03:46.636331793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:03:46.636554849Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:03:46.637992038Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:03:46.638327714Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:46.638656413Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:46.63871456Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:03:46.638732146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:03:46.638804288Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:03:46.638817012Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:03:51.657283174Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:03:51.685346496Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:03:51.685425578Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:03:51.686449508Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:03:51.686650131Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:51.686786197Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:51.68680895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:03:51.686823734Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:03:51.686836224Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:03:51.686847917Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:03:56.708280389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:03:56.737802824Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:03:56.73791442Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:03:56.740134083Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:03:56.74041218Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:56.740761733Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:03:56.740802744Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:03:56.740820025Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:03:56.740834243Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:03:56.740988693Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:04:01.7667704Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:04:01.801909318Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:04:01.80202301Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:04:01.80326845Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:04:01.803507005Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:01.803694426Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:01.8037326Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:04:01.803748546Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:04:01.803761388Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:04:01.804109493Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:04:06.822188963Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:04:06.851359429Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:04:06.851477207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:04:06.853272147Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:04:06.853843852Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:06.85434651Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:06.854378956Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:04:06.85439506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:04:06.854410247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:04:06.854422146Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:04:11.872748606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:04:11.902422903Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:04:11.902512714Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:04:11.904186001Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:04:11.904886594Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:11.905433331Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:11.905481932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:04:11.905496611Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:04:11.905509245Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:04:11.905519153Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:04:16.924468454Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:04:16.953158204Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:04:16.953283462Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:04:16.954428113Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:04:16.954679228Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:16.954855485Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:16.954885725Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:04:16.954900383Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:04:16.954946982Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:04:16.954959888Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:04:21.973286409Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:04:22.001394828Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:04:22.001515878Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:04:22.003657756Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:04:22.003898478Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:22.0040799Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:22.004122149Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:04:22.004138717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:04:22.004151795Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:04:22.004701947Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:04:27.024815722Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:04:27.054965209Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:04:27.05506325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:04:27.056186811Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:04:27.056509516Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:27.056709553Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:27.056743243Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:04:27.056761392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:04:27.056774882Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:04:27.056786263Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:04:32.074574123Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:04:32.102677854Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:04:32.102778657Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:04:32.105299064Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:04:32.105716982Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:32.106039349Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:32.106070764Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:04:32.10608707Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:04:32.106100758Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:04:32.106112082Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:04:37.121175673Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:04:37.150624887Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:04:37.150731602Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:04:37.152623503Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:04:37.153253891Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:37.153779208Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:37.154040176Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:04:37.15405853Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:04:37.154072036Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:04:37.154084668Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:04:42.174265047Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:04:42.203932419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:04:42.204032318Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:04:42.205830499Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:04:42.206021656Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:42.206182729Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:42.206210566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:04:42.206225728Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:04:42.206291339Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:04:42.206302867Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:04:47.223179348Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:04:47.253701571Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:04:47.25380254Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:04:47.25497241Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:04:47.255145931Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:47.255337617Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:47.255362797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:04:47.25537827Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:04:47.255403206Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:04:47.25541493Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:04:52.276281417Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:04:52.30648227Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:04:52.306573346Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:04:52.307697747Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:04:52.307975319Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:52.30858302Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:52.30862379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:04:52.308639938Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:04:52.308653861Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:04:52.308665495Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:04:57.32727355Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:04:57.357049314Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:04:57.357143888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:04:57.358308387Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:04:57.358502907Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:57.358659298Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:04:57.358681859Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:04:57.358697037Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:04:57.358709771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:04:57.358721426Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:05:02.381980291Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:05:02.412045386Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:05:02.412182064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:05:02.413605202Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:05:02.413809981Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:02.413973568Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:02.413998163Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:05:02.414013173Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:05:02.414026055Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:05:02.414037453Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:05:07.427428002Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:05:07.45663461Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:05:07.456740438Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:05:07.457841309Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:05:07.458091171Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:07.458280129Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:07.458317055Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:05:07.458332624Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:05:07.458344319Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:05:07.458354884Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:05:12.476285711Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:05:12.507405146Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:05:12.507498004Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:05:12.508764939Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:05:12.509013176Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:12.509296482Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:12.50933816Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:05:12.50935447Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:05:12.5093681Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:05:12.50970265Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:05:17.528289747Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:05:17.556182766Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:05:17.556298997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:05:17.55750132Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:05:17.557700406Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:17.55785885Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:17.557897401Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:05:17.55791208Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:05:17.557926038Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:05:17.558280832Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:05:22.577656679Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:05:22.605609802Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:05:22.605754204Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:05:22.606911183Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:05:22.607085403Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:22.607219617Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:22.607302084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:05:22.6073186Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:05:22.607331461Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:05:22.607681132Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:05:27.619802286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:05:27.651464508Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:05:27.651563851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:05:27.653378015Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:05:27.653939977Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:27.654429335Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:27.654542807Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:05:27.654560612Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:05:27.654573532Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:05:27.654585573Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:05:32.670207016Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:05:32.700184578Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:05:32.700359068Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:05:32.703835263Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:05:32.704369239Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:32.704989502Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:32.705214537Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:05:32.705259512Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:05:32.705273709Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:05:32.705283211Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:05:37.718610117Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:05:37.748408003Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:05:37.748580425Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:05:37.750183396Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:05:37.750658589Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:37.751099962Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:37.751265814Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:05:37.751290724Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:05:37.751305035Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:05:37.751316754Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:05:42.767074819Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:05:42.797049239Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:05:42.797136944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:05:42.798167704Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:05:42.798379347Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:42.798521136Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:42.798543561Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:05:42.798558701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:05:42.798571825Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:05:42.798583553Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:05:47.816306594Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:05:47.844946901Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:05:47.845055659Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:05:47.84614959Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:05:47.846358959Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:47.846524161Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:47.84655501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:05:47.846569286Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:05:47.84659598Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:05:47.846606834Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:05:52.862970048Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:05:52.893066308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:05:52.893156415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:05:52.89422553Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:05:52.894473075Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:52.894673737Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:52.894717731Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:05:52.894732834Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:05:52.894744085Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:05:52.894753785Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:05:57.910277376Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:05:57.939334137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:05:57.939447809Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:05:57.940965283Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:05:57.941382417Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:57.941529484Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:05:57.941551941Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:05:57.941567083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:05:57.941580621Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:05:57.941592133Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:06:02.961734823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:06:03.007955213Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:06:03.008062733Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:06:03.016652284Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:06:03.017207193Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:03.017460793Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:03.017496147Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:06:03.017512415Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:06:03.017525726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:06:03.017535523Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:06:08.032789366Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:06:08.064823677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:06:08.064963432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:06:08.066204398Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:06:08.066461557Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:08.066676312Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:08.066708483Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:06:08.066722443Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:06:08.066734382Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:06:08.066743936Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:06:13.086635026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:06:13.116799807Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:06:13.116918731Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:06:13.120047627Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:06:13.120699891Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:13.121132245Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:13.12116599Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:06:13.121181964Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:06:13.121196072Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:06:13.121208081Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:06:18.138279065Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:06:18.168227477Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:06:18.168366863Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:06:18.169991478Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:06:18.170466437Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:18.170951516Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:18.170985534Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:06:18.171000454Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:06:18.171013955Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:06:18.171025488Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:06:23.188948951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:06:23.220951177Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:06:23.221053207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:06:23.222315727Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:06:23.222569507Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:23.222777003Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:23.222819497Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:06:23.222836322Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:06:23.222850642Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:06:23.223203473Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:06:28.239862312Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:06:28.271827639Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:06:28.27192144Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:06:28.273447537Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:06:28.273633251Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:28.273800048Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:28.273822224Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:06:28.273836252Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:06:28.273850282Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:06:28.273861746Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:06:33.293391054Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:06:33.32437111Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:06:33.324618083Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:06:33.327793959Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:06:33.328314511Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:33.328720602Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:33.328747815Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:06:33.328763559Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:06:33.328776878Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:06:33.328788806Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:06:38.347277542Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:06:38.378312869Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:06:38.378434082Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:06:38.379592402Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:06:38.379794784Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:38.379974394Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:38.380008456Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:06:38.38002271Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:06:38.380034823Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:06:38.380044896Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:06:43.398167068Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:06:43.427484823Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:06:43.42757681Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:06:43.428737405Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:06:43.42893131Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:43.429086527Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:43.429127457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:06:43.4291437Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:06:43.429156774Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:06:43.429256669Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:06:48.444693979Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:06:48.474119181Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:06:48.474232437Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:06:48.475864863Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:06:48.476533464Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:48.477000906Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:48.477123463Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:06:48.477148388Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:06:48.47716241Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:06:48.477174708Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:06:53.495276066Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:06:53.52618646Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:06:53.526294575Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:06:53.527355206Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:06:53.527539203Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:53.527680263Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:53.527703879Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:06:53.527720679Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:06:53.527734031Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:06:53.527746257Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:06:58.545348863Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:06:58.574104717Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:06:58.574219917Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:06:58.576138861Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:06:58.576371825Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:58.57679271Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:06:58.576845922Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:06:58.576861448Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:06:58.576875597Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:06:58.577376841Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:07:03.591470305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:07:03.624173014Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:07:03.624290869Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:07:03.625452732Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:07:03.625721911Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:03.625954042Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:03.625990292Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:07:03.626007845Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:07:03.626021608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:07:03.62603377Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:07:08.644288287Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:07:08.674102871Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:07:08.674221541Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:07:08.675689236Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:07:08.676213819Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:08.676869947Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:08.676979815Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:07:08.676998479Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:07:08.677013072Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:07:08.677024813Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:07:13.696268277Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:07:13.727066738Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:07:13.727175818Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:07:13.728308844Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:07:13.728701042Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:13.728921261Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:13.728951751Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:07:13.728967913Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:07:13.728981519Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:07:13.728993489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:07:18.74629625Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:07:18.775090463Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:07:18.775179647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:07:18.776274807Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:07:18.776653632Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:18.77688548Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:18.77691305Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:07:18.776927072Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:07:18.776938979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:07:18.776948636Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:07:23.798617527Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:07:23.827088999Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:07:23.82721667Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:07:23.828367836Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:07:23.828701689Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:23.828899102Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:23.828937972Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:07:23.828953737Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:07:23.828991031Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:07:23.829002992Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:07:28.841007298Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:07:28.870673337Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:07:28.870780556Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:07:28.871860812Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:07:28.872070789Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:28.872275284Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:28.872312352Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:07:28.872327414Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:07:28.872341568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:07:28.872778498Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:07:33.892181677Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:07:33.918153107Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:07:33.918260674Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:07:33.919746113Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:07:33.920199683Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:33.920582556Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:33.920618039Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:07:33.920631949Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:07:33.920645185Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:07:33.920656962Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:07:38.936249423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:07:38.964064357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:07:38.964175285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:07:38.965322784Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:07:38.965569368Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:38.965721014Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:38.965748642Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:07:38.965762844Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:07:38.965775476Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:07:38.965786931Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:07:43.982301293Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:07:44.01420958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:07:44.014323092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:07:44.015983153Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:07:44.016185166Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:44.01639633Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:44.016571667Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:07:44.01659284Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:07:44.016605479Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:07:49.035031097Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:07:49.064723694Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:07:49.064845366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:07:49.06627058Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:07:49.066701235Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:49.066894965Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:49.066928545Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:07:49.066944774Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:07:49.066957788Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:07:49.06696896Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:07:54.088333477Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:07:54.117962792Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:07:54.118073958Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:07:54.120162406Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:07:54.120573973Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:54.120837292Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:54.12089646Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:07:54.120913975Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:07:54.12092582Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:07:54.121322056Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:07:59.138535685Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:07:59.168028951Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:07:59.168115756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:07:59.169338058Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:07:59.169570258Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:59.169748298Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:07:59.169786334Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:07:59.169801047Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:07:59.169858751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:07:59.16987073Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:08:04.18927502Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:08:04.220790129Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:08:04.220903152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:08:04.222016477Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:08:04.222294942Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:04.222530958Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:04.222560771Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:08:04.222577778Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:08:04.222608019Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:08:04.22261986Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:08:09.235434386Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:08:09.264843796Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:08:09.264975962Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:08:09.266464076Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:08:09.266967218Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:09.267351871Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:09.267386174Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:08:09.267403347Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:08:09.267416218Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:08:09.267427898Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:08:14.284298059Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:08:14.314131368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:08:14.314266536Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:08:14.315362563Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:08:14.315545302Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:14.315694587Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:14.315723494Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:08:14.315738814Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:08:14.315752386Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:08:14.315763799Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:08:19.33146799Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:08:19.362027469Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:08:19.36211461Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:08:19.363305047Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:08:19.363563243Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:19.36377695Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:19.363799895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:08:19.363815887Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:08:19.363829447Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:08:19.363840965Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:08:24.386288617Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:08:24.415706822Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:08:24.415817093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:08:24.417910023Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:08:24.418435965Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:24.418717677Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:24.418744658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:08:24.418760975Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:08:24.418774181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:08:24.41878603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:08:29.434266807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:08:29.464694173Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:08:29.464809343Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:08:29.465929956Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:08:29.466194492Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:29.466442678Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:29.46648213Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:08:29.466498762Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:08:29.466568365Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:08:29.466579546Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:08:34.487123938Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:08:34.517517221Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:08:34.517630853Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:08:34.518689593Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:08:34.518873186Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:34.519029708Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:34.519053017Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:08:34.519068593Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:08:34.51908162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:08:34.519093254Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:08:39.53480827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:08:39.565030882Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:08:39.565154727Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:08:39.566302077Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:08:39.566507234Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:39.566667062Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:39.566696191Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:08:39.566711137Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:08:39.566724997Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:08:39.566736655Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:08:44.590556703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:08:44.621617589Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:08:44.62174011Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:08:44.622768424Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:08:44.622944717Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:44.623089282Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:44.62311272Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:08:44.623127091Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:08:44.623139736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:08:44.623151378Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:08:49.640661728Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:08:49.670702015Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:08:49.670813141Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:08:49.671931529Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:08:49.672117949Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:49.672294903Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:49.672332962Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:08:49.672348481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:08:49.672361062Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:08:49.672848422Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:08:54.694266058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:08:54.719985083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:08:54.720064922Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:08:54.721344927Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:08:54.721620199Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:54.721858089Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:54.721896094Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:08:54.721911276Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:08:54.721925779Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:08:54.721937729Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:08:59.739198927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:08:59.767706321Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:08:59.767801311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:08:59.768994767Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:08:59.769173288Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:59.769354614Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:08:59.769378376Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:08:59.769394587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:08:59.769407479Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:08:59.769418881Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:09:04.788213087Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:09:04.818269843Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:09:04.818359279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:09:04.819492212Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:09:04.819735238Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:04.8199536Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:04.819987707Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:09:04.820003532Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:09:04.8200164Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:09:04.820028629Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:09:09.841102052Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:09:09.869388595Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:09:09.869497713Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:09:09.870589178Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:09:09.870808126Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:09.871014396Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:09.871044542Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:09:09.871061Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:09:09.871074021Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:09:09.871086045Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:09:14.887437569Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:09:14.91734898Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:09:14.917474527Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:09:14.919721178Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:09:14.919974676Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:14.920200202Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:14.920252064Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:09:14.920278013Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:09:14.920291156Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:09:14.920303149Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:09:19.938526554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:09:19.968945576Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:09:19.96905828Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:09:19.972098954Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:09:19.972602362Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:19.972877234Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:19.972929181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:09:19.972945792Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:09:19.972959962Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:09:19.972980921Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:09:24.99330145Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:09:25.02276778Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:09:25.022875085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:09:25.024499492Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:09:25.02497214Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:25.025375448Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:25.025412346Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:09:25.025427269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:09:25.025475309Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:09:25.025487738Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:09:30.042392433Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:09:30.072160386Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:09:30.072273481Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:09:30.073544914Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:09:30.073744731Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:30.073903419Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:30.073932477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:09:30.073946978Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:09:30.073960244Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:09:30.073972032Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:09:35.088294205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:09:35.117282552Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:09:35.117398508Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:09:35.118676768Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:09:35.118921681Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:35.119141437Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:35.119182506Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:09:35.119198276Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:09:35.11925311Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:09:35.119266576Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:09:40.135624702Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:09:40.165037447Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:09:40.16515923Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:09:40.166313971Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:09:40.166506777Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:40.166666554Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:40.166713384Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:09:40.166728415Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:09:40.166741521Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:09:40.167126059Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:09:45.189854724Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:09:45.218801973Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:09:45.218913834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:09:45.219985731Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:09:45.220290423Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:45.220637479Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:45.220668704Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:09:45.220685095Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:09:45.22072342Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:09:45.220736151Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:09:50.238311648Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:09:50.26607334Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:09:50.266177616Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:09:50.267248301Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:09:50.267508964Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:50.267715347Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:50.267744524Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:09:50.26775818Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:09:50.267769534Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:09:50.267779351Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:09:55.285286867Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:09:55.315939832Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:09:55.316051936Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:09:55.317611525Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:09:55.317870969Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:55.318087633Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:09:55.31811053Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:09:55.318125983Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:09:55.318139805Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:09:55.318151276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:10:00.33929591Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:10:00.36893181Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:10:00.369055552Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:10:00.370267059Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:10:00.370587243Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:00.370910012Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:00.370970113Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:10:00.370989171Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:10:00.37100124Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:10:00.371021875Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:10:05.394643417Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:10:05.423052711Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:10:05.423150083Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:10:05.424363171Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:10:05.424705209Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:05.424862881Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:05.424905218Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:10:05.424920691Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:10:05.424935604Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:10:05.425423668Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:10:10.446064524Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:10:10.474171846Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:10:10.474282339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:10:10.475400659Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:10:10.475659834Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:10.475898721Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:10.475943236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:10:10.475959223Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:10:10.475971482Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:10:10.47633697Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:10:15.494303189Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:10:15.523264325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:10:15.523370172Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:10:15.524911476Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:10:15.525378658Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:15.527437947Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:15.527482788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:10:15.527498719Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:10:15.527510487Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:10:15.527520331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:10:20.546756027Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:10:20.575638249Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:10:20.575738847Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:10:20.576820458Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:10:20.576999104Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:20.57714632Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:20.577169785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:10:20.577184462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:10:20.57719769Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:10:20.577210004Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:10:25.596306475Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:10:25.624274279Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:10:25.624388611Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:10:25.626224251Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:10:25.626508574Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:25.626728163Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:25.626771364Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:10:25.62678775Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:10:25.626798969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:10:25.627168127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:10:30.644228399Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:10:30.674354118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:10:30.674467168Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:10:30.675948378Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:10:30.67627999Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:30.677504092Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:30.677536465Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:10:30.677553131Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:10:30.677591081Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:10:30.677603609Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:10:35.695295842Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:10:35.724676003Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:10:35.724812618Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:10:35.725954921Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:10:35.726130248Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:35.726311816Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:35.726338706Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:10:35.726354654Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:10:35.726367728Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:10:35.726379603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:10:40.741763957Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:10:40.771492975Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:10:40.771582259Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:10:40.773742586Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:10:40.774304573Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:40.774687109Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:40.774717628Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:10:40.774732279Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:10:40.774745162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:10:40.774756422Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:10:45.790738495Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:10:45.819791454Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:10:45.819909311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:10:50.838279771Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:10:50.865757895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:10:50.865870685Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:10:50.868011515Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:10:50.868197836Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:50.868552559Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:50.868607476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:10:50.868624597Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:10:50.868638241Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:10:50.869003442Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:10:55.886287726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:10:55.915762997Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:10:55.915868605Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:10:55.918797295Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:10:55.919285732Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:55.91967149Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:10:55.91984443Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:10:55.919864963Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:10:55.91987808Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:10:55.919889513Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:11:00.935046411Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:11:00.965621705Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:11:00.965756421Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:11:00.96682864Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:11:00.967002933Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:00.967136618Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:00.967159109Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:11:00.96717336Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:11:00.967186758Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:11:00.967198278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:11:05.981387221Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:11:06.013475816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:11:06.013571945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:11:06.015249045Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:11:06.015949704Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:06.016573884Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:06.016714037Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:11:06.016761896Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:11:06.016946813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:11:06.016961108Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:11:11.032424652Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:11:11.061512502Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:11:11.061629809Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:11:11.063429668Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:11:11.063900086Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:11.064312865Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:11.064343763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:11:11.064359039Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:11:11.064371758Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:11:11.064383586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:11:16.081335185Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:11:16.111928749Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:11:16.112031017Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:11:16.113454091Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:11:16.113732385Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:16.113959114Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:16.113992117Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:11:16.114039953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:11:16.114070216Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:11:16.114078276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:11:21.130623745Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:11:21.160847654Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:11:21.160938704Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:11:21.162703896Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:11:21.162904327Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:21.163141438Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:21.163173396Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:11:21.163189263Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:11:21.163202341Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:11:21.163213796Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:11:26.181097134Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:11:26.210313678Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:11:26.210417431Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:11:26.211474397Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:11:26.211646161Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:26.211779298Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:26.211807149Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:11:26.21182232Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:11:26.211835086Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:11:26.21184663Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:11:31.230269707Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:11:31.260903018Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:11:31.260994813Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:11:31.263026183Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:11:31.263631674Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:31.26409152Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:31.264254454Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:11:31.264273784Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:11:31.264287746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:11:31.264299893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:11:36.279485474Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:11:36.309400507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:11:36.309518494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:11:36.310600985Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:11:36.310786318Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:36.310943225Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:36.310969739Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:11:36.310984185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:11:36.311027965Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:11:36.311039389Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:11:41.330318713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:11:41.360593492Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:11:41.360722939Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:11:41.361823886Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:11:41.361995995Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:41.362161928Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:41.362184785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:11:41.362200197Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:11:41.36221322Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:11:41.36222535Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:11:46.384287483Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:11:46.414358819Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:11:46.414449723Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:11:46.416840009Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:11:46.417044113Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:46.417211561Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:46.417252074Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:11:46.417303472Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:11:46.417316923Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:11:46.417328116Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:11:51.434126425Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:11:51.463163977Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:11:51.463295218Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:11:51.465012527Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:11:51.465542386Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:51.465798086Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:51.465835627Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:11:51.46588906Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:11:51.465919373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:11:51.465931513Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:11:56.488015861Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:11:56.516998022Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:11:56.51708523Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:11:56.518146244Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:11:56.518478973Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:56.518727466Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:11:56.518754475Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:11:56.518768872Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:11:56.518792232Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:11:56.518804448Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:12:01.554886842Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:12:01.602378321Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:12:01.602500407Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:12:01.603730966Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:12:01.603974565Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:01.604214143Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:01.604250389Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:12:01.604265111Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:12:01.60427917Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:12:01.604290591Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:12:06.624858294Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:12:06.652939267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:12:06.653058201Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:12:06.654060743Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:12:06.654214864Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:06.654379218Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:06.654403344Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:12:06.654417946Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:12:06.654431135Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:12:06.654442507Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:12:11.673267637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:12:11.701976856Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:12:11.702066709Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:12:11.7047995Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:12:11.705005588Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:11.705589143Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:11.705627963Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:12:11.705644007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:12:11.705658024Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:12:11.705670076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:12:16.720980706Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:12:16.749856865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:12:16.74996526Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:12:16.75252141Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:12:16.752970377Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:16.753150823Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:16.7531838Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:12:16.753199501Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:12:16.753214367Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:12:16.75322664Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:12:21.774214569Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:12:21.804438941Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:12:21.80465165Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:12:21.806392244Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:12:21.806881205Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:21.807293525Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:21.807442349Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:12:21.807462609Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:12:21.807474821Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:12:21.807486864Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:12:26.825153968Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:12:26.854797507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:12:26.854926108Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:12:26.85599902Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:12:26.856206291Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:26.856406401Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:26.85643525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:12:26.856555818Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:12:26.856570949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:12:26.85658281Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:12:31.874553302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:12:31.904635683Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:12:31.904729211Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:12:31.906972623Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:12:31.907183207Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:31.907373077Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:31.907415861Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:12:31.907431602Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:12:31.9074446Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:12:31.907974802Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T04:12:31.908333136Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:12:36.924840585Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:12:36.954101179Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:12:36.954219856Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:12:36.958468589Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:12:36.958978148Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:36.959379526Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:36.959414873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:12:36.959430322Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:12:36.959445292Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:12:36.95945706Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:12:41.97828702Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:12:42.004768907Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:12:42.004880364Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:12:42.007185009Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:12:42.007480497Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:42.007732607Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:42.007766325Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:12:42.007781995Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:12:42.00779534Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:12:42.007806054Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:12:47.025522991Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:12:47.053287001Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:12:47.053422095Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:12:47.05506183Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:12:47.055453183Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:47.056023532Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:47.056054293Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:12:47.056068572Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:12:47.056081133Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:12:47.056093332Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:12:52.071938574Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:12:52.099751188Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:12:52.099865933Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:12:52.101028752Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:12:52.101258827Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:52.101448243Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:52.101489144Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:12:52.101505795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:12:52.101562734Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:12:52.101577757Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:12:57.118419525Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:12:57.147549703Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:12:57.147654567Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:12:57.148877951Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:12:57.149067721Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:57.149226445Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:12:57.14927391Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:12:57.149289844Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:12:57.149303496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:12:57.149315376Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:13:02.170673671Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:13:02.20397472Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:13:02.204087974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:13:02.20607231Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:13:02.206358553Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:02.206538592Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:02.206584925Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:13:02.20660205Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:13:02.206615561Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:13:02.20698495Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:13:07.221800267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:13:07.251561992Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:13:07.251667948Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:13:07.253229092Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:13:07.253731647Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:07.253890379Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:07.253922099Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:13:07.253937026Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:13:07.2539596Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:13:07.25397222Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:13:12.274725528Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:13:12.303950912Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:13:12.304057945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:13:12.306716589Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:13:12.306899418Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:12.307085508Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:12.30711541Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:13:12.307130894Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:13:12.307144126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:13:12.307166126Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:13:17.322354935Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:13:17.352155168Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:13:17.352280068Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:13:17.35504594Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:13:17.35527662Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:17.355452718Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:17.355495652Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:13:17.355511315Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:13:17.355522719Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:13:17.355747503Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:13:22.377484466Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:13:22.406545283Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:13:22.406674403Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:13:22.407782857Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:13:22.407953344Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:22.408108392Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:22.408131594Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:13:22.408146711Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:13:22.40816029Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:13:22.408171826Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:13:27.42248508Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:13:27.453177477Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:13:27.453281389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:13:27.455052093Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:13:27.455530175Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:27.455677686Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:27.455706236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:13:27.45572182Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:13:27.455734488Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:13:27.455746014Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:13:32.474275905Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:13:32.503043328Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:13:32.503133682Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:13:32.504326044Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:13:32.50474417Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:32.505053029Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:32.505120394Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:13:32.505138197Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:13:32.505220106Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:13:32.505590832Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:13:37.522276471Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:13:37.550176295Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:13:37.55068901Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:13:37.552206238Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:13:37.552844622Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:37.553251906Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:37.553284698Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:13:37.553300178Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:13:37.55331391Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:13:37.553325737Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:13:42.569306708Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:13:42.599405839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:13:42.599497731Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:13:42.60075206Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:13:42.600953155Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:42.601120664Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:42.601147025Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:13:42.601162132Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:13:42.601174635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:13:42.601186453Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:13:47.614079549Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:13:47.643619555Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:13:47.64371223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:13:47.646112446Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:13:47.646390388Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:47.64662631Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:47.646670201Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:13:47.646686818Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:13:47.646698564Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:13:47.647073317Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:13:52.664307034Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:13:52.69212937Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:13:52.692255867Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:13:52.693772884Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:13:52.694021168Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:52.694263346Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:52.69429839Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:13:52.694313658Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:13:52.694369231Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:13:52.694379736Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:13:57.713298318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:13:57.743099355Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:13:57.743189814Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:13:57.745978961Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:13:57.74619331Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:57.746430904Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:13:57.746467107Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:13:57.7465066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:13:57.746520129Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:13:57.746531506Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:14:02.765294275Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:14:02.795487096Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:14:02.795595201Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:14:07.813927537Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:14:07.843688573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:14:07.843813552Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:14:07.845074918Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:14:07.845285544Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:07.845449612Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:07.845474379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:14:07.845489892Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:14:07.845503168Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:14:07.845514636Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:14:12.861802781Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:14:12.893804513Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:14:12.893916627Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:14:12.896115857Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:14:12.896348419Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:12.896682862Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:12.896719634Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:14:12.896733682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:14:12.896745124Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:14:12.896754985Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:14:17.912152046Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:14:17.942084908Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:14:17.942199241Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:14:17.943230897Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:14:17.943438455Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:17.94357599Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:17.943602926Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:14:17.943617727Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:14:17.94363149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:14:17.943642816Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:14:22.964682505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:14:22.996061757Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:14:22.996159694Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:14:22.997370209Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:14:22.997548614Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:22.997687806Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:22.99771256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:14:22.997727357Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:14:22.997741179Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:14:22.997752669Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:14:28.012142105Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:14:28.040933343Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:14:28.041044173Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:14:28.042550681Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:14:28.042989494Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:28.043533446Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:28.043567033Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:14:28.043581802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:14:28.043594609Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:14:28.043606371Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:14:33.062086058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:14:33.092340284Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:14:33.092533987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:14:33.095007909Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:14:33.095253289Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:33.095466196Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:33.095495329Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:14:33.095510768Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:14:33.09552403Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:14:33.095535966Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:14:38.112693336Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:14:38.141390085Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:14:38.141514852Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:14:38.142851729Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:14:38.143049018Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:38.14321363Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:38.143256399Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:14:38.143270198Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:14:38.143280832Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:14:38.143290466Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:14:43.163563676Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:14:43.191483096Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:14:43.191595756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:14:43.195438235Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:14:43.19565721Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:43.195838675Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:43.195880479Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:14:43.195895523Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:14:43.195906624Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:14:43.1959162Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:14:48.214170869Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:14:48.245723969Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:14:48.245838164Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:14:48.247428852Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:14:48.247951996Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:48.248383212Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:48.24865681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:14:48.248688426Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:14:48.248702725Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:14:48.249127666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:14:53.265274278Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:14:53.29341026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:14:53.293520637Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:14:53.294652194Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:14:53.29485379Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:53.295000379Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:53.295040566Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:14:53.295056053Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:14:53.295070887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:14:53.295507063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:14:58.31376799Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:14:58.341228093Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:14:58.341335997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:14:58.3430179Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:14:58.3435928Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:58.344078144Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:14:58.344283999Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:14:58.344304608Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:14:58.344317288Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:14:58.344329023Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:15:03.359194211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:15:03.391378124Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:15:03.391475415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:15:03.39277614Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:15:03.392975631Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:03.393131282Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:03.393158445Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:15:03.393173671Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:15:03.393187367Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:15:03.393198853Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:15:08.409290942Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:15:08.438990124Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:15:08.439115416Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:15:08.440284559Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:15:08.441761186Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:08.442264135Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:08.442300342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:15:08.442316412Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:15:08.442330564Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:15:08.442342409Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:15:13.462284085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:15:13.491309539Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:15:13.491399719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:15:13.492623068Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:15:13.492805882Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:13.492944433Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:13.492972599Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:15:13.492988506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:15:13.493026926Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:15:13.493038539Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:15:18.509859127Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:15:18.538412019Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:15:18.538498228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:15:18.539504942Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:15:18.539694426Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:18.53985055Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:18.539889521Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:15:18.53994643Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:15:18.539960556Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:15:18.53997179Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:15:23.55804716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:15:23.588744663Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:15:23.588865594Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:15:23.590066917Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:15:23.590304637Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:23.590529136Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:23.590571956Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:15:23.590588544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:15:23.59060219Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:15:23.590969534Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:15:28.606386639Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:15:28.635277569Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:15:28.635379859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:15:28.636393896Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:15:28.63675437Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:28.636928777Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:28.636969841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:15:28.636985861Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:15:28.636999073Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:15:28.637482015Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:15:33.65511285Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:15:33.685710863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:15:33.685821495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:15:33.687097436Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:15:33.687442946Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:33.68763201Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:33.687658721Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:15:33.687674462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:15:33.687699731Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:15:33.687711788Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:15:38.703978302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:15:38.733576204Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:15:38.733689884Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:15:38.734867884Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:15:38.735094332Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:38.735319074Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:38.735360103Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:15:38.735376656Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:15:38.735391135Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:15:38.735777448Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:15:43.752860047Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:15:43.783637316Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:15:43.783752801Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:15:43.785211919Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:15:43.785681722Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:43.785922303Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:43.785959123Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:15:43.785974297Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:15:43.785988032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:15:43.78599942Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:15:48.803313549Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:15:48.832045814Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:15:48.832137643Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:15:48.833740246Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:15:48.834270288Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:48.834533341Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:48.834668013Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:15:48.835059554Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:15:48.835092732Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:15:48.835103067Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:15:53.851390069Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:15:53.881579418Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:15:53.881731187Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:15:53.882908653Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:15:53.883172767Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:53.883420624Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:53.883457474Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:15:53.883471768Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:15:53.883484916Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:15:53.883495264Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:15:58.899545473Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:15:58.929107458Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:15:58.929223944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:15:58.930344398Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:15:58.930548238Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:58.930708952Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:15:58.930736219Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:15:58.930765647Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:15:58.930778356Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:15:58.93078986Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:16:03.952288479Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:16:03.979939359Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:16:03.980037076Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:16:03.981402556Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:16:03.981616238Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:03.981786813Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:03.981827644Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:16:03.981844329Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:16:03.981858725Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:16:03.982222308Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:16:08.99862446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:16:09.030440849Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:16:09.030548437Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:16:09.032063185Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:16:09.032717407Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:09.033193887Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:09.033224739Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:16:09.033495747Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:16:09.033515073Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:16:09.033527442Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:16:14.048327244Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:16:14.07999738Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:16:14.080159528Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:16:14.081350399Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:16:14.081539313Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:14.081695209Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:14.081717621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:16:14.081732146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:16:14.081754979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:16:14.081766508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:16:19.098271145Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:16:19.12828211Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:16:19.128398183Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:16:19.129665762Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:16:19.129892284Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:19.130079359Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:19.130120392Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:16:19.130135793Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:16:19.130148397Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:16:19.130250975Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:16:24.152578499Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:16:24.181777972Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:16:24.181895832Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:16:24.18298326Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:16:24.183165544Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:24.18334451Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:24.183375251Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:16:24.183390623Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:16:24.183403654Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:16:24.183415177Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:16:29.201301889Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:16:29.231279075Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:16:29.231413908Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:16:29.23263467Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:16:29.232819556Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:29.232956932Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:29.232986501Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:16:29.233002352Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:16:29.233015783Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:16:29.233027747Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:16:34.252254235Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:16:34.282888699Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:16:34.283000826Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:16:34.284402995Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:16:34.284793461Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:34.285060854Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:34.285090799Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:16:34.28511724Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:16:34.285131112Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:16:34.285143321Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:16:39.300295571Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:16:39.329871155Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:16:39.32999661Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:16:39.331634332Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:16:39.331870305Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:39.332065955Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:39.33209916Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:16:39.33211429Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:16:39.332126746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:16:39.332137314Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:16:44.347964367Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:16:44.377749754Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:16:44.377852391Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:16:44.378960769Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:16:44.379133653Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:44.379289038Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:44.379313703Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:16:44.379328657Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:16:44.379342356Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:16:44.379353995Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:16:49.395168371Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:16:49.425067463Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:16:49.425179007Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:16:49.426209894Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:16:49.426475057Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:49.426636195Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:49.426673951Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:16:49.426689555Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:16:49.42675253Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:16:49.426764185Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:16:54.445289424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:16:54.47489711Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:16:54.475012682Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:16:54.476580414Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:16:54.477089174Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:54.477256555Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:54.477280917Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:16:54.477320874Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:16:54.477334725Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:16:54.47734688Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:16:59.495166565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:16:59.524056358Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:16:59.524153853Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:16:59.525610711Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:16:59.526067323Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:59.526567996Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:16:59.526804187Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:16:59.526824754Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:16:59.526838298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:16:59.526850145Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:17:04.548547917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:17:04.578461171Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:17:04.578552706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:17:04.579766954Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:17:04.580023406Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:04.580283875Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:04.580324035Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:17:04.580387414Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:17:04.580401487Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:17:04.580717327Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:17:09.597379896Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:17:09.630076032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:17:09.630168546Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:17:09.632613121Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:17:09.632820459Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:09.633003155Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:09.63303088Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:17:09.633046293Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:17:09.633060414Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:17:09.633070902Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:17:14.649309906Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:17:14.678568351Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:17:14.678659261Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:17:14.680032081Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:17:19.697616411Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:17:19.726503022Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:17:19.726597814Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:17:19.728111988Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:17:19.728863684Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:19.729351368Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:19.729475591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:17:19.729514249Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:17:19.729528647Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:17:19.729540955Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:17:24.746183717Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:17:24.777740854Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:17:24.777857707Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:17:24.779048025Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:17:24.779299812Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:24.779514379Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:24.779544514Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:17:24.779559577Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:17:24.779587887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:17:24.779598714Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:17:29.79633269Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:17:29.825346227Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:17:29.82548868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:17:29.826630575Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:17:29.826986708Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:29.827306504Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:29.827336168Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:17:29.827352062Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:17:29.827365316Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:17:29.82737696Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:17:34.843855303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:17:34.871288503Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:17:34.871409592Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:17:34.873321521Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:17:34.873584886Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:34.873834084Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:34.873873585Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:17:34.873888747Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:17:34.873902857Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:17:34.874289213Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:17:39.889527918Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:17:39.918744189Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:17:39.918834562Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:17:39.919948722Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:17:39.92013389Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:39.920315788Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:39.920356771Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:17:39.920494103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:17:39.920508803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:17:39.920520138Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:17:44.93778389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:17:44.966109305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:17:44.966199772Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:17:44.968065442Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:17:44.968615945Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:44.969062Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:44.969095069Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:17:44.969135273Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:17:44.969149705Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:17:44.969161508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:17:49.984632245Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:17:50.015431561Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:17:50.015641933Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:17:50.016903818Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:17:50.017132028Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:50.017359664Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:50.017414259Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:17:50.017465112Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:17:50.017479361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:17:50.017491393Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:17:55.03627193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:17:55.067741227Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:17:55.067857994Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:17:55.069308435Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:17:55.069633451Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:55.069956541Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:17:55.070005857Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:17:55.070022268Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:17:55.070035086Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:17:55.070405398Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:18:00.090798186Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:18:00.160066961Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:18:00.160205513Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:18:00.173101442Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:18:00.173445719Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:00.173699572Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:00.173730856Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:18:00.173746706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:18:00.173787994Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:18:00.173811686Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:18:05.190184341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:18:05.221533385Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:18:05.221661374Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:18:05.223291039Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:18:05.223803797Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:05.224199573Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:05.224263716Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:18:05.224279896Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:18:05.225058302Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:18:05.225076994Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:18:10.240505503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:18:10.269179592Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:18:10.269291871Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:18:10.270430583Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:18:10.27062489Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:10.270780904Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:10.270821878Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:18:10.270837194Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:18:10.270850486Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:18:10.271177363Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:18:15.287275686Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:18:15.316555024Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:18:15.316676076Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:18:15.317828747Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:18:15.318010916Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:15.318145597Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:15.318173758Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:18:15.31818959Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:18:15.318202746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:18:15.318214478Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:18:20.337145312Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:18:20.366255207Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:18:20.366346873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:18:20.367478173Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:18:20.367665614Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:20.367802091Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:20.367824573Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:18:20.367841191Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:18:20.36785385Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:18:20.367865246Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:18:25.386098581Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:18:25.414087282Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:18:25.414175907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:18:25.415171053Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:18:25.415396557Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:25.415602527Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:25.415648209Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:18:25.415664168Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:18:25.41567576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:18:25.416151255Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:18:30.429946193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:18:30.460616413Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:18:30.460727827Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:18:30.463097965Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:18:30.463721301Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:30.464129105Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:30.464165105Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:18:30.464181148Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:18:30.464193229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:18:30.464203132Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:18:35.482298066Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:18:35.51153331Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:18:35.511639677Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:18:35.513717244Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:18:35.514084578Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:35.514229161Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:35.514274145Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:18:35.514288974Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:18:35.514302741Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:18:35.514314588Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:18:40.529524953Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:18:40.560766762Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:18:40.560863737Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:18:40.56290861Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:18:40.563104495Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:40.563281598Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:40.563308079Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:18:40.563323134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:18:40.563335802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:18:40.563344428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:18:45.57922616Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:18:45.609670625Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:18:45.609767972Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:18:45.610942218Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:18:45.611177524Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:45.61139578Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:45.611429478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:18:45.611475889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:18:45.611488469Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:18:45.611500184Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:18:50.629331583Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:18:50.659088375Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:18:50.659203179Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:18:50.661087655Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:18:50.661555982Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:50.66220092Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:50.662245944Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:18:50.662262698Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:18:50.662277728Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:18:50.662289649Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:18:55.676194644Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:18:55.706375492Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:18:55.706495891Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:18:55.708251062Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:18:55.708915367Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:55.709417545Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:18:55.709455355Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:18:55.709470541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:18:55.709483705Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:18:55.709495989Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:19:00.727543775Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:19:00.756608387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:19:00.756715254Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:19:00.757806095Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:19:00.757978959Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:00.758117413Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:00.758140751Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:19:00.758157261Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:19:00.758170181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:19:00.758181857Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:19:05.776469018Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:19:05.807091281Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:19:05.807202373Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:19:05.80841434Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:19:05.808841364Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:05.809053332Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:05.809096278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:19:05.809184392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:19:05.809198746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:19:05.809209217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:19:10.829164769Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:19:10.861535824Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:19:10.861645787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:19:10.863288095Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:19:10.863719653Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:10.864055223Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:10.864164691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:19:10.864183111Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:19:10.864197395Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:19:10.864209712Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:19:15.883754353Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:19:15.912918096Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:19:15.913021695Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:19:15.915094664Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:19:15.915373555Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:15.915577287Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:15.915620119Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:19:15.915635429Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:19:15.915697052Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:19:15.91571041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:19:20.932342266Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:19:20.961784523Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:19:20.961872747Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:19:20.963529591Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:19:20.96399626Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:20.964612557Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:20.964858111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:19:20.964878962Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:19:20.965258023Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:19:20.965273036Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:19:25.982407728Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:19:26.010733539Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:19:26.010856372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:19:26.01213371Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:19:26.012549652Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:26.012791874Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:26.01281701Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:19:26.012849322Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:19:26.012864218Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:19:26.012875918Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:19:31.0321091Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:19:31.062393843Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:19:31.062492961Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:19:31.063631689Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:19:31.063893907Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:31.064072263Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:31.064103622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:19:31.064142107Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:19:31.064153885Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:19:31.064163352Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:19:36.085191616Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:19:36.117937776Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:19:36.118049185Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:19:36.119213979Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:19:36.119512766Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:36.119733309Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:36.119772956Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:19:36.119787989Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:19:36.119800093Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:19:36.120162976Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:19:41.141304953Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:19:41.170427263Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:19:41.17053683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:19:41.1720478Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:19:41.172736616Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:41.172917086Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:41.172948935Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:19:41.172964641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:19:41.172977876Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:19:41.172989555Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:19:46.187785487Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:19:46.218058011Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:19:46.218168439Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:19:46.219256869Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:19:46.219496921Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:46.219719397Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:46.219770051Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:19:46.219786151Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:19:46.219798622Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:19:46.220144701Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:19:51.24109289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:19:51.269873543Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:19:51.269971448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:19:51.271050121Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:19:51.271257503Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:51.27144518Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:51.271471451Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:19:51.271486456Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:19:51.271524117Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:19:51.27153556Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:19:56.287701148Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:19:56.318804794Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:19:56.318927795Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:19:56.321501829Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:19:56.321729871Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:56.321866549Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:19:56.321889578Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:19:56.321904633Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:19:56.321917812Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:19:56.321929404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:20:01.354740054Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:20:01.430522388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:20:01.430640152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:20:01.432960672Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:20:01.433141583Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:01.433344245Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:01.433375917Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:20:01.43339163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:20:01.433404979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:20:01.433416473Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:20:06.45586479Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:20:06.486691518Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:20:06.486815678Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:20:06.489137199Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:20:06.489389852Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:06.489582745Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:06.489612506Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:20:06.489628089Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:20:06.489641523Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:20:06.489653752Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:20:11.508272157Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:20:11.536544008Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:20:11.536655033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:20:11.538399456Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:20:11.538884339Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:11.539088451Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:11.539165852Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:20:11.539182201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:20:11.539195504Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:20:11.539207052Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:20:16.558520259Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:20:16.588996771Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:20:16.589108648Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:20:16.590275341Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:20:16.590495451Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:16.590723195Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:16.59075137Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:20:16.590765999Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:20:16.590779492Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:20:16.590791287Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:20:21.607316798Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:20:21.637198871Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:20:21.637324855Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:20:21.638451831Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:20:21.638663363Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:21.638843743Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:21.638881183Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:20:21.638897367Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:20:21.638958724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:20:21.638970698Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:20:26.655845787Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:20:26.684967122Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:20:26.685057748Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:20:26.686126201Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:20:26.686348125Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:26.686512517Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:26.686557975Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:20:26.686572413Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:20:26.686639449Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:20:26.686651683Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:20:31.706440618Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:20:31.737425565Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:20:31.73753347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:20:31.739150667Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:20:31.739571674Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:31.739825866Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:31.739863094Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:20:31.739877179Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:20:31.739889059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:20:31.739899771Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:20:36.760215236Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:20:36.785503991Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:20:36.785589309Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:20:36.787011679Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:20:36.787609517Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:36.788074665Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:36.78810752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:20:36.788122813Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:20:36.788135509Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:20:36.788147758Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:20:41.806894131Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:20:41.836024573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:20:41.836132038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:20:41.838102019Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:20:46.858553212Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:20:46.890901384Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:20:46.891015537Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:20:46.892830335Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:20:46.89333312Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:46.89378795Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:46.894014537Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:20:46.89403696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:20:46.894068769Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:20:46.894081043Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:20:51.912824114Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:20:51.941316404Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:20:51.941414755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:20:51.94244613Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:20:51.942670434Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:51.942833773Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:51.942877872Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:20:51.942893371Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:20:51.942906152Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:20:51.943366774Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:20:56.960295141Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:20:56.990438657Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:20:56.990535854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:20:56.991647768Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:20:56.991853863Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:56.992008523Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:20:56.992049339Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:20:56.99206477Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:20:56.992077031Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:20:56.99208622Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:21:02.01479816Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:21:02.05574576Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:21:02.05586792Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:21:02.0573726Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:21:02.057606114Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:02.057772651Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:02.057815391Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:21:02.057831122Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:21:02.057844576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:21:02.058256492Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:21:07.080262557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:21:07.113207823Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:21:07.113342421Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:21:07.114512556Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:21:07.114725974Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:07.11488771Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:07.114917029Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:21:07.114932778Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:21:07.114948281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:21:07.114959898Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:21:12.132250289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:21:12.159725365Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:21:12.159849124Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:21:12.161525481Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:21:12.161944101Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:12.162410377Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:12.162449254Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:21:12.16246537Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:21:12.162477975Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:21:12.162490221Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:21:17.178492217Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:21:17.209008059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:21:17.2091009Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:21:17.210579122Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:21:17.210870745Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:17.211153301Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:17.211206883Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:21:17.211223995Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:21:17.211295306Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:21:17.211308048Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:21:22.23259573Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:21:22.264501186Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:21:22.265009103Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:21:22.266347509Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:21:22.266918306Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:22.267347064Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:22.268257497Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:21:22.268279218Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:21:22.268295523Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:21:22.268306888Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:21:27.284290695Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:21:27.313441199Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:21:27.313547486Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:21:27.314724769Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:21:27.314967048Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:27.315185147Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:27.315220831Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:21:27.315268066Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:21:27.315282639Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:21:27.315294411Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:21:32.332292352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:21:32.364627577Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:21:32.364749412Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:21:32.365910292Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:21:32.366146089Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:32.36634949Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:32.366382283Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:21:32.366397796Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:21:32.366410058Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:21:32.366421458Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:21:37.382757218Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:21:37.412298215Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:21:37.412521189Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:21:37.413780988Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:21:37.414022824Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:37.414222376Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:37.414273043Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:21:37.414293591Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:21:37.414306053Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:21:37.414645091Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:21:42.432197338Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:21:42.462929993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:21:42.463043279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:21:42.464296746Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:21:42.464753279Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:42.465217783Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:42.465263546Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:21:42.465280403Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:21:42.465291605Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:21:42.46530136Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:21:47.482224787Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:21:47.510642857Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:21:47.510749386Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:21:47.512486021Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:21:47.512990201Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:47.513436552Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:47.513477559Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:21:47.513493592Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:21:47.513506217Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:21:47.513517722Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:21:52.530747918Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:21:52.563001072Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:21:52.563111572Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:21:52.565566773Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:21:52.565929002Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:52.566353507Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:52.566475604Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:21:52.56696189Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:21:52.566989942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:21:52.566999429Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:21:57.580082583Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:21:57.609798972Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:21:57.609886567Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:21:57.610955977Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:21:57.61113903Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:57.611327702Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:21:57.611367877Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:21:57.611383116Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:21:57.611453812Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:21:57.611466337Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:22:02.629992552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:22:02.662157797Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:22:02.662291398Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:22:02.663356759Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:22:02.663605071Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:02.663792827Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:02.663835281Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:22:02.663851418Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:22:02.663864338Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:22:02.664254716Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:22:07.680047584Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:22:07.711790123Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:22:07.711909957Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:22:07.713564869Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:22:07.713981876Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:07.715319444Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:07.715358575Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:22:07.715373502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:22:07.715386025Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:22:07.715398132Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:22:12.730470171Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:22:12.761201217Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:22:12.76131549Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:22:12.76241802Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:22:12.762663153Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:12.762868239Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:12.762915325Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:22:12.762931675Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:22:12.762942992Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:22:12.762952728Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:22:17.778424871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:22:17.80876546Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:22:17.808885165Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:22:17.809957262Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:22:17.810113338Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:17.810259488Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:17.810282605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:22:17.810298057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:22:17.810311361Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:22:17.810323166Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:22:22.829016394Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:22:22.858501329Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:22:22.85860314Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:22:22.86347299Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:22:22.864001478Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:22.864163641Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:22.864193939Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:22:22.864209441Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:22:22.864223187Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:22:22.864249604Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:22:27.880785204Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:22:27.912392152Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:22:27.912638149Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:22:27.914023625Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:22:27.91429535Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:27.914517721Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:27.914603811Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:22:27.91462083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:22:27.914755271Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:22:27.914769192Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:22:32.932285004Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:22:32.961728003Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:22:32.961816278Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:22:32.963076053Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:22:32.963381199Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:32.963700782Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:32.963761282Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:22:32.963778427Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:22:32.963793251Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:22:32.963813632Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:22:37.978345064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:22:38.008706041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:22:38.008802012Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:22:38.011269835Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:22:38.011800283Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:38.012184582Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:38.012219552Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:22:38.012250301Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:22:38.012290998Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:22:38.012303154Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:22:43.031296787Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:22:43.061071443Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:22:43.061182778Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:22:43.062277401Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:22:43.062582537Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:43.062832565Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:43.062880935Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:22:43.062896828Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:22:43.0629104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:22:43.062931396Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:22:48.079094365Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:22:48.109252802Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:22:48.109367533Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:22:48.11068201Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:22:48.11094487Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:48.111183399Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:48.111213797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:22:48.111229725Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:22:48.111254002Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:22:48.11126647Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:22:53.131893861Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:22:53.159798668Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:22:53.159911807Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:22:53.16207377Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:22:53.162670979Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:53.163156834Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:53.163266759Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:22:53.163291433Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:22:53.163327203Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:22:53.163339885Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:22:58.176384044Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:22:58.205109031Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:22:58.205314063Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:22:58.208282047Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:22:58.208631464Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:58.208785027Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:22:58.208813546Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:22:58.208829893Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:22:58.208842864Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:22:58.208854766Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:23:03.228798419Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:23:03.257385446Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:23:03.257482718Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:23:03.259159872Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:23:03.259714903Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:03.26010126Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:03.260135308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:23:03.260150713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:23:03.260163959Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:23:03.260175882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:23:08.275793954Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:23:08.303629669Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:23:08.303751115Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:23:08.305282046Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:23:08.305539541Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:08.305993991Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:08.306031489Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:23:08.306045731Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:23:08.306058196Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:23:08.306069413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:23:13.325085533Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:23:13.352672378Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:23:13.352789569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:23:13.353886164Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:23:13.354075696Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:13.354222122Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:13.354261294Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:23:13.354276717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:23:13.354290157Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:23:13.354301835Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:23:18.372277919Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:23:18.401119915Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:23:18.401250811Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:23:18.403094012Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:23:18.403322716Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:18.403561438Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:18.403594091Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:23:18.403609908Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:23:18.403623254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:23:18.403634734Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:23:23.425767423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:23:23.457040279Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:23:23.457129696Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:23:23.45824744Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:23:23.458510342Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:23.458689816Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:23.458718746Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:23:23.458734211Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:23:23.458744458Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:23:23.45875346Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:23:28.474937931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:23:28.50376038Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:23:28.503853288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:23:28.505424479Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:23:28.505784796Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:28.506139022Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:28.506171846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:23:28.506188554Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:23:28.506201623Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:23:28.506213649Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:23:33.528452999Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:23:33.559277319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:23:33.559391251Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:23:33.561178185Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:23:33.561608677Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:33.561771581Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:33.561796009Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:23:33.561847391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:23:33.561860374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:23:33.56187181Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:23:38.578270256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:23:38.608018392Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:23:38.608110331Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:23:38.609989772Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:23:38.610457618Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:38.610936488Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:38.611116829Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:23:38.611137472Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:23:38.611152212Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:23:38.611163821Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:23:43.629283082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:23:43.658081321Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:23:43.658184669Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:23:43.659733739Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:23:43.659897175Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:43.660033858Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:43.660055717Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:23:43.660070456Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:23:43.66008387Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:23:43.660095364Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:23:48.676786418Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:23:48.706283482Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:23:48.706410221Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:23:48.707409634Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:23:48.707597825Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:48.707755941Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:48.70778202Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:23:48.707819765Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:23:48.707832983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:23:48.707844371Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:23:53.729462429Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:23:53.758157499Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:23:53.758279661Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:23:53.759312463Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:23:53.759567037Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:53.759745968Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:53.759774334Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:23:53.759788912Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:23:53.759814995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:23:53.759826711Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:23:58.773494708Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:23:58.803328861Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:23:58.803415294Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:23:58.804648626Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:23:58.804899311Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:58.805080664Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:23:58.805109471Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:23:58.805147715Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:23:58.805159818Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:23:58.805170197Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:24:03.828273386Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:24:03.858071685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:24:03.858164407Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:24:03.85928156Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:24:03.859512804Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:03.859681217Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:03.859713812Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:24:03.859728614Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:24:03.859742972Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:24:03.859754672Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:24:08.876332942Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:24:08.905609117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:24:08.905726836Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:24:08.907008403Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:24:08.907506651Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:08.907887615Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:08.907920803Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:24:08.907938198Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:24:08.9079673Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:24:08.907979285Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:24:13.928296507Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:24:13.959662343Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:24:13.959779625Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:24:13.961180358Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:24:13.961677625Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:13.961884504Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:13.96191591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:24:13.961949499Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:24:13.961963212Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:24:13.961974401Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:24:18.978574714Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:24:19.008255675Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:24:19.008372851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:24:19.01008398Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:24:19.010556613Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:19.010734927Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:19.010785925Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:24:19.010820163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:24:19.010865405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:24:19.01087814Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:24:24.028273014Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:24:24.060024182Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:24:24.060133174Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:24:24.061638482Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:24:24.062157461Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:24.062607242Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:24.062641647Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:24:24.062694859Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:24:24.062706805Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:24:24.06271663Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:24:29.074647528Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:24:29.106136645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:24:29.106277121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:24:29.107723925Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:24:29.107988011Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:29.108251726Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:29.108283086Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:24:29.108298488Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:24:29.108311703Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:24:29.108323254Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:24:34.12416146Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:24:34.154117495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:24:34.15420482Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:24:34.155692074Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:24:34.155918021Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:34.156099824Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:34.15614638Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:24:34.156222464Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:24:34.156252339Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:24:34.156263762Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:24:39.170563177Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:24:39.201970953Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:24:39.202078112Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:24:39.203149653Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:24:39.20340589Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:39.203580152Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:39.203610773Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:24:39.203627056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:24:39.203640049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:24:39.203651674Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:24:44.224416499Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:24:44.252191195Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:24:44.252295387Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:24:44.254191398Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:24:44.254681137Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:44.254875588Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:44.254937341Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:24:44.255005241Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:24:44.255018359Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:24:44.255029812Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:24:49.270782729Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:24:49.300008266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:24:49.300125212Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:24:49.30264034Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:24:49.302984746Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:49.303176705Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:49.303220061Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:24:49.303250787Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:24:49.303264185Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:24:49.303274331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:24:54.318520056Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:24:54.347130978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:24:54.347283186Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:24:54.349358395Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:24:54.349629975Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:54.349863292Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:54.349901866Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:24:54.349916112Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:24:54.349927288Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:24:54.34993647Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:24:59.366316005Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:24:59.396286602Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:24:59.396374035Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:24:59.397477792Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:24:59.397695368Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:59.397898268Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:24:59.397926748Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:24:59.397941073Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:24:59.397978352Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:24:59.39798992Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:25:04.41595544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:25:04.445429097Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:25:04.44554374Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:25:04.447500291Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:25:04.448023232Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:04.448279499Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:04.448312794Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:25:04.448521793Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:25:04.448575396Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:25:04.448587703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:25:09.465051658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:25:09.493338282Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:25:09.493452642Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:25:09.494669425Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:25:09.494920798Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:09.495129125Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:09.495172705Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:25:09.49518827Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:25:09.495744875Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:25:09.495764511Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:25:14.515398422Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:25:14.544888236Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:25:14.545000373Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:25:14.546169076Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:25:14.54642596Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:14.546619566Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:14.546658636Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:25:14.546675628Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:25:14.546734747Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:25:14.546747195Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:25:19.563263414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:25:19.591138795Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:25:19.591266642Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:25:19.593163118Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:25:19.593752501Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:19.59415565Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:19.594189149Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:25:19.594203528Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:25:19.594259752Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:25:19.594272297Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:25:24.611403336Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:25:24.642837599Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:25:24.642927945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:25:24.64523185Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:25:24.645849935Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:24.646364435Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:24.646485602Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:25:24.646625422Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:25:24.646641645Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:25:24.646654306Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:25:29.659459196Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:25:29.688858888Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:25:29.688982436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:25:29.690090236Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:25:29.690315471Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:29.690465454Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:29.690492826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:25:29.690507464Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:25:29.690520599Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:25:29.690532326Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:25:34.710372663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:25:34.738207229Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:25:34.738313521Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:25:34.740168945Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:25:34.740817875Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:34.740996796Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:34.741042457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:25:34.741057849Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:25:34.741071299Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:25:34.741093277Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:25:39.758521661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:25:39.786507826Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:25:39.786632107Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:25:39.789299524Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:25:39.789769347Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:39.789966469Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:39.790001567Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:25:39.79001566Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:25:39.790027688Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:25:39.790037816Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:25:44.809145611Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:25:44.8391543Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:25:44.83926027Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:25:44.840320421Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:25:44.840699561Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:44.840906578Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:44.840946381Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:25:44.840963502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:25:44.840978266Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:25:44.841402064Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:25:49.859694195Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:25:49.8908829Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:25:49.890972747Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:25:49.892741522Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:25:49.893250055Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:49.893669365Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:49.893705381Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:25:49.89372126Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:25:49.893747183Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:25:49.893758589Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:25:54.912462045Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:25:54.942868179Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:25:54.942992864Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:25:54.944195337Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:25:54.944435218Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:54.944806121Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:54.944855472Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:25:54.944871542Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:25:54.944885184Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:25:54.945391783Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:25:59.961503525Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:25:59.991867645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:25:59.991967926Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:25:59.993085881Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:25:59.993308626Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:59.993501996Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:25:59.993534104Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:25:59.993549971Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:25:59.993563133Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:25:59.993575153Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:26:05.018015755Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:26:05.049301432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:26:05.049424463Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:26:05.052175106Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:26:05.052550523Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:05.052787745Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:05.052827979Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:26:05.052845783Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:26:05.052859629Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:26:05.053345319Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:26:10.071272317Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:26:10.098693785Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:26:10.098808257Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:26:10.100052886Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:26:10.10032697Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:10.100690427Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:10.100743856Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:26:10.100761207Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:26:10.100798733Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:26:10.100810917Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:26:15.118286544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:26:15.149093916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:26:15.14920549Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:26:15.151113459Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:26:15.151633023Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:15.151792384Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:15.15181629Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:26:15.151832717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:26:15.151846163Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:26:15.151857859Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:26:20.168846251Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:26:20.198289506Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:26:20.198389518Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:26:20.199958335Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:26:20.201135895Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:20.201373182Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:20.201406721Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:26:20.201432308Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:26:20.201446413Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:26:20.201458624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:26:25.221280032Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:26:25.2496008Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:26:25.249691863Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:26:25.250831472Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:26:25.250997538Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:25.251133029Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:25.251155878Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:26:25.251171563Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:26:25.251185063Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:26:25.251196595Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:26:30.268279591Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:26:30.297689457Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:26:30.297809835Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:26:30.29930689Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:26:30.299738369Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:30.299915599Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:30.299947149Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:26:30.299962867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:26:30.299974649Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:26:30.299985002Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:26:35.316876481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:26:35.347017891Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:26:35.347122208Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:26:35.349142386Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:26:35.349496907Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:35.349777707Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:35.349816652Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:26:35.349831712Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:26:35.349845962Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:26:35.349857611Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:26:40.367304061Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:26:40.39548195Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:26:40.395613578Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:26:40.39866345Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:26:40.399298679Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:40.399789288Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:40.399904231Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:26:40.399922015Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:26:40.399936207Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:26:40.39994792Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:26:45.416827218Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:26:45.443001937Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:26:45.443111837Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:26:45.444824475Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:26:45.445226823Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:45.44576044Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:45.445791861Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:26:45.445806826Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:26:45.44586439Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:26:45.445876718Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:26:50.461384297Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:26:50.489102318Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:26:50.489206259Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:26:50.490908458Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:26:50.491198645Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:50.491466105Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:50.491518471Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:26:50.491533809Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:26:50.491546116Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:26:50.491557667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:26:55.510288905Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:26:55.536964482Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:26:55.537076009Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:26:55.539431084Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:26:55.539602472Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:55.539966886Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:26:55.539997726Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:26:55.540012443Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:26:55.540026284Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:26:55.540037339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:27:00.556277156Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:27:00.584132245Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:27:00.58427345Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:27:00.585869438Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:27:00.586375003Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:00.586567662Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:00.586622121Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:27:00.586638081Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:27:00.586650487Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:27:00.586660751Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:27:05.604782538Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:27:05.633602557Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:27:05.633705769Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:27:05.636039668Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:27:05.636725979Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:05.637109347Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:05.637138842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:27:05.637154137Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:27:05.637186887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:27:05.637199173Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:27:10.653432Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:27:10.683793481Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:27:10.683884621Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:27:10.685117767Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:27:10.685360124Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:10.685544909Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:10.685577258Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:27:10.68559371Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:27:10.685607972Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:27:10.685619754Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:27:15.702778275Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:27:15.732754906Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:27:15.732846608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:27:15.734040241Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:27:15.734337934Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:15.734539673Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:15.734580697Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:27:15.734596618Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:27:15.734610461Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:27:15.734941071Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:27:20.755327697Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:27:20.785066483Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:27:20.785174324Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:27:20.787087194Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:27:20.787621778Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:20.787774549Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:20.787807663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:27:20.787823983Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:27:20.787837095Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:27:20.787848937Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:27:25.808576063Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:27:25.836417623Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:27:25.836672471Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:27:25.838136273Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:27:25.838576869Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:25.838726302Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:25.838760622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:27:25.838774908Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:27:25.838787321Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:27:25.83879757Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:27:30.857299174Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:27:30.884575977Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:27:30.884687342Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:27:30.887068271Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:27:30.887292426Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:30.887494359Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:30.8875338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:27:30.887551061Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:27:30.887564651Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:27:30.887930002Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:27:35.909078612Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:27:35.938026178Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:27:35.938128542Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:27:35.939125209Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:27:35.939356024Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:35.93954009Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:35.939601193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:27:35.939617416Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:27:35.939638837Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:27:35.939650237Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:27:40.9533053Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:27:40.983064376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:27:40.983180537Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:27:40.984292867Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:27:40.984627962Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:40.984824133Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:40.984862439Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:27:40.98487707Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:27:40.984890342Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:27:40.985301996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:27:46.007269522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:27:46.037479085Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:27:46.037572237Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:27:46.040070013Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:27:46.040349237Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:46.040727471Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:46.040779397Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:27:46.040796402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:27:46.04081098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:27:46.041194476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:27:51.061761971Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:27:51.090995014Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:27:51.091109189Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:27:51.093213257Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:27:51.093801043Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:51.09399904Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:51.094031577Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:27:51.094047266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:27:51.094059731Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:27:51.094070922Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:27:56.113293826Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:27:56.14490468Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:27:56.145004791Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:27:56.146151923Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:27:56.146477945Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:56.146780074Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:27:56.146842172Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:27:56.14685713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:27:56.146870917Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:27:56.146882248Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:28:01.167301114Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:28:01.197689463Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:28:01.197804822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:28:01.199054791Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:28:01.199590716Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:01.199907614Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:01.199935807Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:28:01.19995147Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:28:01.200010816Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:28:01.200022392Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:28:06.218512844Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:28:06.24803737Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:28:06.248161822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:28:06.250189597Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:28:06.250661334Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:06.250856638Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:06.250907226Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:28:06.250922875Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:28:06.250936227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:28:06.251045325Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:28:11.269567761Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:28:11.298709771Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:28:11.298832975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:28:11.300703817Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:28:11.301298848Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:11.301794767Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:11.301999701Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:28:11.302021401Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:28:11.302035347Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:28:11.302047028Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:28:16.31620764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:28:16.343934513Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:28:16.344021661Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:28:16.346132272Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:28:16.346681991Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:16.34709249Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:16.34722291Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:28:16.34726408Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:28:16.347278555Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:28:16.347290595Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:28:21.365121237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:28:21.394984091Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:28:21.395076272Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:28:21.396121213Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:28:21.396373302Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:21.396765762Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:21.396796665Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:28:21.396809435Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:28:21.396845887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:28:21.396856878Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:28:26.414860789Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:28:26.44697733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:28:26.447087997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:28:26.448671671Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:28:26.448919076Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:26.449086402Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:26.44911019Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:28:26.449126225Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:28:26.449170338Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:28:26.449182155Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:28:31.466293176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:28:31.49296829Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:28:31.493054802Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:28:31.496031184Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:28:31.496364645Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:31.496771808Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:31.496832279Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:28:31.496849614Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:28:31.496917989Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:28:31.496931019Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:28:36.516266219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:28:36.546907556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:28:36.546995001Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:28:36.548058365Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:28:36.548272618Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:36.548576104Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:36.548618927Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:28:36.548635935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:28:36.548649163Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:28:36.549061037Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:28:41.569923699Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:28:41.597202291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:28:41.597331636Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:28:41.598319218Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:28:41.598503842Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:41.598672925Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:41.598697161Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:28:41.59871152Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:28:41.598724609Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:28:41.598736107Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:28:46.616269602Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:28:46.645880673Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:28:46.646001572Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:28:46.647137548Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:28:46.64744195Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:46.64766795Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:46.647718016Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:28:46.647737093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:28:46.648109998Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:28:46.648125592Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:28:51.668205201Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:28:51.699436028Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:28:51.699526587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:28:51.702062818Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:28:51.702527991Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:51.70274061Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:51.702766306Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:28:51.702780337Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:28:51.702792496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:28:51.70280367Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:28:56.721509644Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:28:56.749290899Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:28:56.749390288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:28:56.750501763Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:28:56.75073397Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:56.750920949Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:28:56.750963691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:28:56.751041511Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:28:56.751054123Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:28:56.751064123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:29:01.7714352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:29:01.804864074Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:29:01.804986349Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:29:01.806802261Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:29:01.807382086Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:01.807653985Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:01.807724284Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:29:01.807742939Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:29:01.807756602Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:29:01.808166231Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:29:06.829273795Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:29:06.859606075Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:29:06.859740202Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:29:06.861989726Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:29:06.862173666Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:06.862374358Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:06.86242017Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:29:06.862436089Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:29:06.862448675Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:29:06.862807599Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:29:11.878074141Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:29:11.906671798Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:29:11.906763064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:29:11.907907312Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:29:11.908143608Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:11.908354613Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:11.908397744Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:29:11.908413357Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:29:11.908600862Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:29:11.908612592Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:29:16.92718622Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:29:16.960365323Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:29:16.960543724Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:29:16.964053738Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:29:16.964257844Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:16.964443706Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:16.964490442Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:29:16.964507015Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:29:16.964520635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:29:16.964532994Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:29:21.987748445Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:29:22.019017872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:29:22.019153021Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:29:22.020539624Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:29:22.02085965Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:22.021086946Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:22.021127541Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:29:22.021142632Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:29:22.021155188Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:29:22.021248667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:29:27.042393811Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:29:27.073169024Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:29:27.073283931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:29:27.075522312Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:29:27.076116636Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:27.076786367Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:27.076909514Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:29:27.076933919Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:29:27.076947886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:29:27.076960149Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:29:32.09698234Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:29:32.124993177Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:29:32.125113222Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:29:32.126483576Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:29:32.126721384Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:32.12694394Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:32.126967793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:29:32.126982617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:29:32.127027506Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:29:32.127039892Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:29:37.141098073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:29:37.174567805Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:29:37.174694854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:29:37.175889322Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:29:37.176081908Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:37.176271797Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:37.176304266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:29:37.176320033Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:29:37.176351581Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:29:37.176364333Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:29:42.195366267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:29:42.227087537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:29:42.227183237Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:29:42.228925693Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:29:42.229516182Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:42.230013685Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:42.230222775Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:29:42.230256804Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:29:42.230305968Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:29:42.230317914Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:29:47.248273304Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:29:47.277819666Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:29:47.277919944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:29:47.279987971Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:29:47.2806175Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:47.28102458Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:47.281060776Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:29:47.281076362Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:29:47.281114786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:29:47.28112693Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:29:52.300002723Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:29:52.331786581Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:29:52.332270179Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:29:52.333573653Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:29:52.333990473Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:52.334467899Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:52.33450586Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:29:52.334521102Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:29:52.334534984Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:29:52.334546842Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:29:57.349017737Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:29:57.379026893Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:29:57.37913278Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:29:57.38020635Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:29:57.380487347Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:57.380667299Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:29:57.380692633Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:29:57.380708766Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:29:57.380721759Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:29:57.380733571Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:30:02.423692299Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:30:02.607982599Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:30:02.608091411Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:30:02.613351118Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:30:02.613657944Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:02.619203255Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:02.619268973Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:30:02.619286505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:30:02.619300327Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:30:02.61931209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:30:07.664037002Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:30:07.694959646Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:30:07.695059694Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:30:07.696172051Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:30:07.696543616Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:07.696752648Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:07.696792906Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:30:07.696866281Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:30:07.696880137Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:30:07.696891625Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:30:12.716308762Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:30:12.7437795Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:30:12.743873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:30:12.745221967Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:30:12.74542779Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:12.745570772Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:12.745625333Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:30:12.745640954Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:30:12.745655146Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:30:12.74566702Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:30:17.762272758Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:30:17.789325232Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:30:17.789418297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:30:17.790700241Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:30:17.790983227Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:17.791198643Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:17.791222679Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:30:17.79124518Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:30:17.791287286Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:30:17.791298942Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:30:22.812165372Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:30:22.840810528Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:30:22.840921076Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:30:22.842046335Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:30:22.842288168Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:22.842486436Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:22.84251405Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:30:22.842530178Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:30:22.842567451Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:30:22.842579233Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:30:27.861597794Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:30:27.892595373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:30:27.892709895Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:30:32.909043289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:30:32.937206732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:30:32.937326311Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:30:32.939123348Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:30:32.939393274Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:32.939604271Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:32.939645869Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:30:32.939682078Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:30:32.939705965Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:30:32.939717667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:30:37.955600173Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:30:37.986901357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:30:37.986990694Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:30:37.988167094Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:30:37.988467286Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:37.98868853Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:37.988719025Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:30:37.988735617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:30:37.988748844Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:30:37.988760384Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:30:43.010289007Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:30:43.040545108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:30:43.040646866Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:30:43.042533394Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:30:43.042755345Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:43.042926774Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:43.042993371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:30:43.043009159Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:30:43.043020479Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:30:43.043031613Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:30:48.061026999Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:30:48.091780283Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:30:48.091893047Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:30:48.095334169Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:30:48.095882521Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:48.096375587Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:48.096688041Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:30:48.096713166Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:30:48.096747702Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:30:48.096761075Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:30:53.114381971Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:30:53.14489266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:30:53.145009298Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:30:53.146867907Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:30:53.147098498Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:53.147324583Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:53.147352785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:30:53.147367755Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:30:53.147379338Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:30:53.147389597Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:30:58.166344204Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:30:58.194074312Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:30:58.194177961Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:30:58.195773762Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:30:58.196369872Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:58.196692749Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:30:58.196737051Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:30:58.196753079Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:30:58.196764862Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:30:58.196775666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:31:03.217220713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:31:03.248964219Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:31:03.249068849Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:31:03.250851954Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:31:03.251066041Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:03.251312072Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:03.251346327Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:31:03.251361856Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:31:03.251374761Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:31:03.251386293Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:31:08.266440689Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:31:08.296881296Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:31:08.296997458Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:31:08.298629847Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:31:08.2991579Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:08.29945989Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:08.299601818Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:31:08.299627563Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:31:08.299640951Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:31:08.299652643Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:31:13.316789521Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:31:13.34655123Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:31:13.34666536Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:31:13.348002395Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:31:13.348259632Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:13.348569501Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:13.348602191Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:31:13.348617007Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:31:13.348631181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:31:13.348643603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:31:18.363604491Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:31:18.394901976Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:31:18.394991082Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:31:18.396892618Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:31:18.397496703Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:18.398078095Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:18.39819889Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:31:18.398223569Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:31:18.398333476Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:31:18.398348632Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:31:23.416288831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:31:23.446977809Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:31:23.447085136Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:31:23.448166879Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:31:23.448375716Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:23.44868788Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:23.448714326Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:31:23.44872995Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:31:23.448744171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:31:23.448756043Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:31:28.464287043Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:31:28.492597752Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:31:28.492727106Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:31:28.49371445Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:31:28.493945953Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:28.494114871Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:28.494153352Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:31:28.49416972Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:31:28.494182463Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:31:28.494529479Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:31:33.513232804Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:31:33.542431403Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:31:33.542544622Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:31:33.545216855Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:31:33.545812104Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:33.545987681Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:33.546030231Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:31:33.546045539Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:31:33.546059306Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:31:33.54607126Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:31:38.562107045Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:31:38.591168331Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:31:38.591300056Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:31:38.59239271Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:31:38.592737427Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:38.592912129Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:38.59293524Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:31:38.592949357Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:31:38.592962163Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:31:38.592973717Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:31:43.611872147Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:31:43.640687071Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:31:43.640785471Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:31:43.641943504Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:31:43.642129Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:43.642291268Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:43.642328375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:31:43.642342875Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:31:43.642353704Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:31:43.642362679Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:31:48.6600814Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:31:48.688879107Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:31:48.689005568Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:31:48.690104843Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:31:48.69031185Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:48.690487824Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:48.690519036Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:31:48.690533873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:31:48.690545212Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:31:48.69055523Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:31:53.707284117Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:31:53.73571008Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:31:53.735829785Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:31:53.737053302Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:31:53.73845529Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:53.738641153Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:53.738671232Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:31:53.738687548Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:31:53.73869942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:31:53.738709132Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:31:58.752080387Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:31:58.783837027Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:31:58.783945244Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:31:58.785005641Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:31:58.785208171Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:58.785400409Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:31:58.785440964Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:31:58.785456786Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:31:58.785469826Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:31:58.785815073Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:32:03.806292557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:32:03.890773723Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:32:03.890863301Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:32:03.89201132Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:32:03.892202481Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:03.892391961Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:03.892410556Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:32:03.892425191Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:32:03.8925646Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:32:03.892579487Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:32:08.907392568Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:32:08.937355926Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:32:08.937470595Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:32:08.938515958Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:32:08.938678398Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:08.938828122Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:08.938851666Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:32:08.938866327Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:32:08.93888024Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:32:08.938891978Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:32:13.957281279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:32:13.987174799Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:32:13.987298948Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:32:13.98837151Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:32:13.988618673Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:13.988774698Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:13.988798322Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:32:13.988812798Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:32:13.988825716Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:32:13.988837409Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:32:19.00530769Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:32:19.036204345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:32:19.036312153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:32:19.037868574Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:32:19.038444229Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:19.038760756Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:19.038824162Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:32:19.038840025Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:32:19.038852032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:32:19.03886261Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:32:24.055418812Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:32:24.086617001Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:32:24.086723337Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:32:24.088095014Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:32:24.088363042Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:24.088753267Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:24.08882131Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:32:24.088836098Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:32:24.088902664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:32:24.088915199Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:32:29.102389368Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:32:29.132089671Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:32:29.132203096Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:32:29.13345475Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:32:29.133654887Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:29.133826065Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:29.133866695Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:32:29.133881581Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:32:29.133895254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:32:29.134224708Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:32:34.153443812Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:32:34.184803403Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:32:34.184913905Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:32:34.186557721Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:32:34.186751739Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:34.186949923Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:34.186983064Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:32:34.186998455Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:32:34.187042415Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:32:34.187052997Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:32:39.201358219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:32:39.232284602Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:32:39.232391811Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:32:39.233699721Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:32:39.233929098Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:39.234119776Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:39.234161552Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:32:39.234176879Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:32:39.23418968Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:32:39.234250668Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:32:44.25584433Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:32:44.284645557Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:32:44.284745709Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:32:44.286171845Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:32:44.286440257Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:44.286627705Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:44.28665711Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:32:44.286671791Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:32:44.28668591Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:32:44.286697643Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:32:49.302765451Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:32:49.331842463Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:32:49.331932895Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:32:49.333490517Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:32:49.33392704Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:49.334255684Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:49.33428821Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:32:49.334304929Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:32:49.334318181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:32:49.334329302Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:32:54.354824078Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:32:54.384155726Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:32:54.384283658Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:32:54.385882105Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:32:54.386363093Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:54.386513402Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:54.38654184Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:32:54.386556622Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:32:54.386570508Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:32:54.386582317Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:32:59.402470638Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:32:59.433028834Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:32:59.433125114Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:32:59.43426214Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:32:59.434450607Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:59.434588896Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:32:59.434611254Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:32:59.434626232Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:32:59.434639175Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:32:59.434650959Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:33:04.454299117Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:33:04.482026622Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:33:04.482140005Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:33:04.483674657Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:33:04.484278761Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:04.484675612Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:04.484716365Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:33:04.484740271Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:33:04.484753793Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:33:04.484764277Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:33:09.500637206Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:33:09.530204594Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:33:09.530338358Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:33:09.531680708Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:33:09.531941699Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:09.532173619Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:09.532226305Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:33:09.5322513Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:33:09.532265648Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:33:09.532277328Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:33:14.55427972Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:33:14.582372748Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:33:14.582485593Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:33:14.583652847Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:33:14.583891874Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:14.584117624Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:14.584172571Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:33:14.584188962Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:33:14.58468219Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:33:14.58469813Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:33:19.600856859Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:33:19.629904326Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:33:19.630024647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:33:19.631014553Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:33:19.631179276Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:19.631339592Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:19.631369299Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:33:19.631383628Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:33:19.631396829Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:33:19.631408385Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:33:24.646518276Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:33:24.675957235Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:33:24.676034902Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:33:24.677799871Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:33:24.678283075Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:24.678721704Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:24.678755583Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:33:24.678771396Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:33:24.678784992Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:33:24.678796436Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:33:29.691782415Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:33:29.721218982Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:33:29.721316803Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:33:29.722445412Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:33:29.72267604Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:29.722858727Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:29.722900204Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:33:29.722915984Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:33:29.722929057Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:33:29.722940917Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:33:34.74274834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:33:34.771646273Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:33:34.771734164Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:33:34.774058949Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:33:34.774569885Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:34.774933937Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:34.774967539Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:33:34.774982213Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:33:34.7749947Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:33:34.775006538Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:33:39.79238295Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:33:39.819782879Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:33:39.819915497Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:33:39.821711291Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:33:39.822251429Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:39.82272265Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:39.822749364Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:33:39.822764891Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:33:39.82277806Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:33:39.822789505Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:33:44.845897807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:33:44.87513906Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:33:44.875226927Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:33:44.87803379Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:33:44.878641757Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:44.879047683Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:44.879106669Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:33:44.87912101Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:33:44.879135049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:33:44.879146402Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:33:49.894951503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:33:49.925426375Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:33:49.9255281Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:33:49.92776907Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:33:49.927963089Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:49.928123448Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:49.928154022Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:33:49.928168988Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:33:49.928183467Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:33:49.928195375Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:33:54.946572639Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:33:54.974453293Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:33:54.974561901Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:33:54.975628438Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:33:54.975862957Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:54.976064738Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:33:54.976094227Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:33:54.976108508Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:33:54.976119906Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:33:54.97613006Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:33:59.994607006Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:34:00.066456287Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:34:00.066593066Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:34:00.067869111Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:34:00.068094707Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:00.068304559Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:00.068333834Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:34:00.068350974Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:34:00.068402749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:34:00.068414706Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:34:05.086305511Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:34:05.115380283Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:34:05.115503541Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:34:05.11801088Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:34:05.118228727Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:05.118433594Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:05.118467933Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:34:05.118482553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:34:05.118494329Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:34:05.118505287Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:34:10.135293554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:34:10.163400956Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:34:10.163498143Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:34:10.165585536Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:34:15.189459913Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:34:15.220897924Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:34:15.221026875Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:34:15.222229887Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:34:15.222504219Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:15.222730429Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:15.222759496Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:34:15.222777203Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:34:15.222791313Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:34:15.222803044Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:34:20.239112191Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:34:20.269334906Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:34:20.269448663Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:34:20.270557053Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:34:20.270825121Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:20.271038391Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:20.271082629Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:34:20.27110014Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:34:20.271112895Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:34:20.271424098Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:34:25.288309235Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:34:25.318813769Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:34:25.319315767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:34:25.321228982Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:34:25.321761265Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:25.3219745Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:25.322007913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:34:25.322023311Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:34:25.322036099Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:34:25.322048468Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:34:30.337040602Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:34:30.367498101Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:34:30.367610365Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:34:30.368921205Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:34:30.369182023Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:30.36943716Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:30.369468931Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:34:30.369485257Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:34:30.369498076Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:34:30.36950855Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:34:35.392308738Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:34:35.419210153Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:34:35.419333327Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:34:35.421165446Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:34:35.421722344Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:35.422183876Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:35.422347172Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:34:35.422372526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:34:35.422387473Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:34:35.422399471Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:34:40.438128505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:34:40.466946994Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:34:40.467047195Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:34:40.468100359Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:34:40.468528297Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:45.486130856Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:34:45.515904403Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:34:45.516011126Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:34:45.517538815Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:34:45.5180269Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:45.518454607Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:45.518486617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:34:45.518501904Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:34:45.518526574Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:34:45.518538361Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:34:50.53726605Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:34:50.566581995Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:34:50.566668195Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:34:50.568080611Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:34:50.568650137Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:50.569023804Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:50.569059482Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:34:50.569074259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:34:50.56908793Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:34:50.569099693Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:34:55.588107062Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:34:55.616194971Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:34:55.616309769Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:34:55.617386499Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:34:55.617633908Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:55.617807569Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:34:55.617847788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:34:55.617862616Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:34:55.617876699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:34:55.618253387Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:35:00.637276885Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:35:00.667025783Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:35:00.667130789Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:35:00.668223461Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:35:00.668576271Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:00.668739249Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:00.668762638Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:35:00.66877795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:35:00.668791659Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:35:00.668803674Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:35:05.692503391Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:35:05.720804755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:35:05.720926402Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:35:05.72206312Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:35:05.722308918Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:05.722513827Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:05.722565378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:35:05.722583853Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:35:05.722596607Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:35:05.722944673Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:35:10.744717917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:35:10.773536752Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:35:10.773628703Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:35:10.774918479Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:35:10.775094Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:10.775256633Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:15.794754218Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:35:15.819605108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:35:15.81969239Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:35:15.821561626Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:35:15.822101286Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:15.822615493Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:15.822745961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:35:15.82276999Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:35:15.822784297Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:35:15.822796646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:35:20.838438381Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:35:20.867223284Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:35:20.867342987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:35:20.869058037Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:35:20.869606146Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:20.870131205Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:20.870173347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:35:20.870188309Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:35:20.87020094Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:35:20.870212529Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:35:25.889308431Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:35:25.917428166Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:35:25.917527979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:35:25.919077111Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:35:25.919641385Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:25.920186348Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:25.920279435Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:35:25.920578644Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:35:25.920599715Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:35:25.920611816Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:35:30.933388828Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:35:30.963622418Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:35:30.963735018Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:35:30.965050108Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:35:30.965252906Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:30.965411726Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:30.965435662Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:35:30.965451155Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:35:30.965464962Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:35:30.965476833Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:35:35.983228219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:35:36.014350596Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:35:36.0144591Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:35:36.015609426Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:35:36.0158518Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:36.016068839Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:36.016099141Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:35:36.016114034Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:35:36.016125935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:35:36.016135935Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:35:41.03252946Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:35:41.063374884Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:35:41.063457736Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:35:41.064661342Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:35:41.064878964Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:41.065039801Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:41.065061443Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:35:41.065075043Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:35:41.065088322Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:35:41.065100358Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:35:46.083268777Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:35:46.113253801Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:35:46.113349289Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:35:51.134382175Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:35:51.163993184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:35:51.164093954Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:35:51.165775725Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:35:51.166298584Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:51.166631271Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:51.166668211Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:35:51.166682971Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:35:51.166723849Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:35:51.166735949Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:35:56.185161058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:35:56.214485164Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:35:56.214590776Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:35:56.21600283Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:35:56.216681834Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:56.216871542Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:35:56.21689829Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:35:56.216913504Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:35:56.216926444Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:35:56.216938109Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:36:01.239373831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:36:01.273614938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:36:01.273744389Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:36:01.275477919Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:36:01.275703562Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:01.275983923Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:01.276018893Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:36:01.276034008Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:36:01.276087099Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:36:01.276100035Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:36:06.293282057Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:36:06.323581975Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:36:06.323680673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:36:06.324918602Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:36:06.325166792Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:06.325402434Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:06.325443338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:36:06.325458817Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:36:06.325532294Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:36:06.325546928Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:36:11.340746647Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:36:11.370688753Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:36:11.370792325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:36:11.371965078Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:36:11.372259975Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:11.372639371Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:11.372670488Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:36:11.372685561Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:36:11.372699186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:36:11.372710203Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:36:16.391414662Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:36:16.419753831Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:36:16.419857941Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:36:16.42136157Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:36:16.421606788Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:16.421793057Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:16.421850063Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:36:16.421865638Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:36:16.422205721Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:36:16.422219483Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:36:21.443569464Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:36:21.4709603Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:36:21.471073512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:36:21.473200111Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:36:21.473474727Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:21.473670574Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:21.473716136Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:36:21.473730724Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:36:21.47374281Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:36:21.473753579Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:36:26.49206982Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:36:26.524299581Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:36:26.524403282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:36:26.525670937Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:36:31.543464728Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:36:31.573162059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:36:31.573282255Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:36:31.574697256Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:36:31.575107587Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:31.575347394Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:31.575379111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:36:31.575394244Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:36:31.57540657Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:36:31.575417897Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:36:36.593251453Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:36:36.62197341Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:36:36.622074887Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:36:36.623570514Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:36:36.623762697Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:36.623902874Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:36.623955677Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:36:36.623971823Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:36:36.623984894Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:36:36.623996251Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:36:41.642645945Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:36:41.67111621Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:36:41.671209371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:36:41.673114773Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:36:41.673646191Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:41.674113472Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:41.674281664Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:36:41.674299995Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:36:41.674494417Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:36:41.674511687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:36:46.691279241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:36:46.719466411Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:36:46.719614824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:36:46.721889348Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:36:46.722092172Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:46.722291036Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:46.722371229Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:36:46.722387637Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:36:46.722398764Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:36:46.722408924Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:36:51.741480998Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:36:51.770927982Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:36:51.771017621Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:36:51.772028496Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:36:51.772208138Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:51.772413616Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:51.772564557Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:36:51.77258245Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:36:51.772596075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:36:51.773089429Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:36:56.789750648Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:36:56.81809371Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:36:56.81818737Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:36:56.819289309Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:36:56.819536834Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:56.819739107Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:36:56.819823181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:36:56.8198713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:36:56.819900615Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:36:56.819912827Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:37:01.836264098Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:37:01.902808612Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:37:01.902973392Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:37:01.90426511Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:37:01.904556369Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:01.904729535Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:01.904754076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:37:01.904770466Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:37:01.904784644Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:37:01.904796498Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:37:06.924990419Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:37:06.9545814Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:37:06.954693448Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:37:06.956087035Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:37:06.956320602Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:06.956648554Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:06.95668939Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:37:06.956705475Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:37:06.956716915Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:37:06.957319777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:37:11.975984396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:37:12.007703533Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:37:12.007810305Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:37:12.009141894Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:37:12.009380291Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:12.009548652Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:12.009577381Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:37:12.009592365Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:37:12.009640621Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:37:12.009653095Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:37:17.03031361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:37:17.061679724Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:37:17.061811614Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:37:17.063106403Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:37:17.063360316Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:17.063605509Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:17.063630449Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:37:17.063646408Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:37:17.063674887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:37:17.063686601Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:37:22.080266109Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:37:22.110372638Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:37:22.110501433Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:37:22.111749132Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:37:22.112057742Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:22.112301884Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:22.112332484Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:37:22.112348161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:37:22.112361167Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:37:22.112371944Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:37:27.126874397Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:37:27.161893927Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:37:27.162121697Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:37:27.163340777Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:37:27.16360588Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:27.163762228Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:27.163790312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:37:27.163805489Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:37:27.16381949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:37:27.163830988Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:37:32.182455147Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:37:32.211004138Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:37:32.211130064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:37:32.212344867Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:37:32.212762175Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:32.212958124Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:32.213001274Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:37:32.213017655Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:37:32.213030119Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:37:32.213041412Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:37:37.227720458Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:37:37.257096942Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:37:37.25718585Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:37:37.25825842Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:37:37.258472094Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:37.258629875Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:37.258669838Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:37:37.258685936Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:37:37.258697989Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:37:37.259029201Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:37:42.278134487Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:37:42.310834129Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:37:42.310940317Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:37:42.312098786Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:37:42.31236013Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:42.312738442Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:42.312778752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:37:42.312793714Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:37:42.3128059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:37:42.313020684Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:37:47.328381228Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:37:47.359196789Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:37:47.359318617Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:37:47.361265895Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:37:47.361462616Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:47.361943619Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:47.362003356Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:37:47.362019081Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:37:47.362042354Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:37:47.362054423Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:37:52.382799267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:37:52.412659656Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:37:52.412772744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:37:52.413806006Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:37:52.41396685Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:52.414099402Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:52.414122655Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:37:52.414136281Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:37:52.414149612Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:37:52.414161213Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:37:57.426502326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:37:57.455478328Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:37:57.455600913Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:37:57.457274088Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:37:57.457770047Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:57.45793408Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:37:57.457958427Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:37:57.457974163Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:37:57.45800452Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:37:57.458016704Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:38:02.477460411Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:38:02.507369858Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:38:02.507484367Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:38:02.508792573Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:38:02.508996309Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:02.509172243Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:02.50920893Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:38:02.509224389Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:38:02.509284473Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:38:02.509295939Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:38:07.5252842Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:38:07.554220303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:38:07.55432706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:38:07.555455198Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:38:07.555715385Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:07.555972939Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:07.55601325Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:38:07.556028897Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:38:07.556040137Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:38:07.556049706Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:38:12.571067817Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:38:12.609074266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:38:12.609193372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:38:12.610524094Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:38:12.610993253Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:12.611399221Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:12.611617228Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:38:12.611640029Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:38:12.611677369Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:38:12.611689255Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:38:17.626520214Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:38:17.656664236Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:38:17.656773977Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:38:17.657943011Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:38:17.658229866Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:17.658626512Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:17.658680323Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:38:17.65869553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:38:17.658708109Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:38:17.658728649Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:38:22.673584375Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:38:22.703867252Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:38:22.703989879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:38:22.705552799Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:38:22.705773674Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:22.705956759Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:22.705989419Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:38:22.706005531Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:38:22.706041253Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:38:22.706051497Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:38:27.722512529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:38:27.753779111Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:38:27.753895215Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:38:27.755583851Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:38:27.755854745Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:27.756046678Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:27.756070688Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:38:27.756085431Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:38:27.756114732Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:38:27.756126824Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:38:32.775273061Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:38:32.806913875Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:38:32.807053786Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:38:32.808627482Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:38:32.809012783Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:32.809160196Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:32.809183602Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:38:32.809200074Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:38:32.809213427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:38:32.809225493Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:38:37.821455157Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:38:37.850027184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:38:37.850148811Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:38:37.853109613Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:38:37.853438511Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:37.853691375Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:37.853730391Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:38:37.853745105Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:38:37.853757317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:38:37.853768235Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:38:42.869281336Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:38:42.896667387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:38:42.896757846Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:38:42.899121454Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:38:42.899384436Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:42.899559225Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:42.89959882Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:38:42.899613849Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:38:42.899625851Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:38:42.899635552Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:38:47.916288772Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:38:47.944864328Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:38:47.945001994Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:38:47.946214438Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:38:47.946449663Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:47.946619589Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:47.946651724Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:38:47.946666061Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:38:47.946678574Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:38:47.946688941Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:38:52.96352677Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:38:52.993037823Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:38:52.99314202Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:38:52.994273007Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:38:52.994523397Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:52.994709441Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:52.994735856Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:38:52.994751184Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:38:52.994764168Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:38:52.994776006Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:38:58.010175176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:38:58.040867099Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:38:58.040976366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:38:58.042486918Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:38:58.043016113Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:58.04342767Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:38:58.043473777Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:38:58.043489215Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:38:58.043504271Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:38:58.043527828Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:39:03.064899189Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:39:03.094961188Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:39:03.09506414Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:39:03.096186026Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:39:03.096383517Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:03.096639348Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:03.096666417Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:39:03.096681696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:39:03.096696088Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:39:03.096708167Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:39:08.111280547Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:39:08.140380759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:39:08.140573929Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:39:08.141619466Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:39:08.141800905Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:08.141936086Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:08.141958737Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:39:08.141974128Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:39:08.141987173Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:39:08.141999083Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:39:13.156624094Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:39:13.185855851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:39:13.185972041Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:39:13.187640379Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:39:13.188090353Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:13.188636658Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:13.188840517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:39:13.188864186Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:39:13.188878287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:39:13.188889967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:39:18.20545149Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:39:18.234463561Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:39:18.234570168Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:39:18.237178789Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:39:18.237799335Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:18.238269859Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:18.238301668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:39:18.238485638Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:39:18.238507544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:39:18.238519111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:39:23.25530458Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:39:23.286254849Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:39:23.286370481Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:39:23.287378017Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:39:23.287575374Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:23.287743052Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:23.28776759Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:39:23.287781957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:39:23.287795032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:39:23.28780643Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:39:28.304908918Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:39:28.336158318Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:39:28.336267259Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:39:28.3374925Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:39:28.337712547Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:28.337907153Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:28.337933022Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:39:28.337948279Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:39:28.337961955Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:39:28.337973572Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:39:33.356161105Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:39:33.386409685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:39:33.386497635Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:39:33.387570186Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:39:33.387826129Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:33.388032825Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:33.388062508Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:39:33.388078976Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:39:33.38809206Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:39:33.388104063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:39:38.405418643Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:39:38.434949832Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:39:38.435038392Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:39:38.436268279Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:39:38.436575119Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:38.436804227Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:38.436829539Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:39:38.436844934Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:39:38.436857988Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:39:38.436869541Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:39:43.457697396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:39:43.487954334Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:39:43.488072585Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:39:43.489548751Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:39:43.4898306Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:43.490044259Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:43.49006661Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:39:43.49008085Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:39:43.490095119Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:39:43.490106847Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:39:48.506316214Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:39:48.53776141Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:39:48.537848692Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:39:48.538954386Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:39:48.539214366Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:48.539412173Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:48.539445153Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:39:48.539460438Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:39:48.539473539Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:39:48.539485005Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:39:53.558278305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:39:53.588615523Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:39:53.588729666Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:39:53.590570111Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:39:53.590889247Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:53.591112294Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:53.591143806Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:39:53.591159384Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:39:53.591171913Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:39:53.591182619Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:39:58.609490877Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:39:58.640261213Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:39:58.640378468Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:39:58.641624778Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:39:58.64188608Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:58.64207792Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:39:58.642107368Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:39:58.642123367Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:39:58.642136635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:39:58.642147836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:40:03.658475628Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:40:03.688386303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:40:03.688611598Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:40:03.691139124Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:40:03.691375909Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:03.69156041Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:03.691598873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:40:03.691613379Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:40:03.691676683Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:40:03.691689644Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:40:08.709294753Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:40:08.739542061Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:40:08.739631334Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:40:08.741324453Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:40:08.741824553Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:08.742182574Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:08.742215972Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:40:08.742231211Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:40:08.742272953Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:40:08.742284734Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:40:13.757022234Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:40:13.785411242Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:40:13.785530961Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:40:13.786634665Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:40:13.786809037Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:13.786952331Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:13.786994259Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:40:13.78701158Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:40:13.787025299Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:40:13.787403591Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:40:18.804074181Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:40:18.835086936Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:40:18.835178979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:40:18.836248467Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:40:18.836599493Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:18.836767078Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:18.836809814Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:40:18.836825771Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:40:18.836839653Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:40:18.837251332Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:40:23.856306593Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:40:23.884033429Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:40:23.88415423Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:40:23.885771818Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:40:23.886153263Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:23.886329241Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:23.886353635Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:40:23.886368607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:40:23.886381797Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:40:23.886393279Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:40:28.900017658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:40:28.932301826Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:40:28.932559031Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:40:28.933713804Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:40:28.93401717Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:28.934272595Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:28.934300988Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:40:33.951025958Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:40:33.979028669Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:40:33.979141549Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:40:33.980184927Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:40:33.980407884Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:33.980716736Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:33.980741992Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:40:33.98075747Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:40:33.980771788Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:40:33.980784071Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:40:38.999031316Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:40:39.030023571Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:40:39.030130543Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:40:39.031295281Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:40:39.031557267Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:39.031784418Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:39.031832928Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:40:39.031848202Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:40:39.031859725Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:40:39.031869785Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:40:44.047473107Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:40:44.078065242Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:40:44.078156406Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:40:44.079685397Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:40:44.080074622Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:44.080296209Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:44.080331283Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:40:44.080348065Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:40:44.080361449Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:40:44.080373571Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:40:49.096414449Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:40:49.127850297Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:40:49.127970916Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:40:49.130094611Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:40:49.130673042Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:49.131149487Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:49.131268173Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:40:49.131307231Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:40:49.131320393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:40:49.131332724Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:40:54.149131436Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:40:54.177670114Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:40:54.17778121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:40:54.180088063Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:40:54.180311354Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:54.180646313Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:54.180696429Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:40:54.18071202Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:40:54.18072498Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:40:54.181139901Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:40:59.198453154Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:40:59.227491311Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:40:59.227586293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:40:59.228740252Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:40:59.228983526Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:59.229175179Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:40:59.229202863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:40:59.229218411Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:40:59.229290635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:40:59.229304977Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:41:04.251541Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:41:04.281006213Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:41:04.281128249Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:41:04.282203645Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:41:04.282482047Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:04.282731082Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:04.282770821Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:41:04.282787114Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:41:04.282798032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:41:04.282806964Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:41:09.301283831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:41:09.331075723Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:41:09.331183119Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:41:09.332823368Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:41:09.333250782Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:09.333718947Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:09.333836654Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:41:09.333866625Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:41:09.334183425Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T04:41:09.33448608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:41:09.334500207Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:41:14.351000274Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:41:14.381930685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:41:14.38204154Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:41:14.383620572Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:41:14.38421084Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:14.384514206Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:14.384549193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:41:14.384564697Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:41:14.384578182Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:41:14.384590582Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:41:19.401774758Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:41:19.431815102Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:41:19.431938679Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:41:19.43351559Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:41:19.434038189Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:19.434215526Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:19.434258816Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:41:19.43427664Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:41:19.434290237Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:41:19.434302262Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:41:24.449196955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:41:24.480918958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:41:24.481058784Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:41:24.482508288Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:41:24.482929002Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:24.483093925Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:24.483328743Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:41:24.483353107Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:41:24.483366554Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:41:24.483378163Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:41:29.50787279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:41:29.543986624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:41:29.54407733Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:41:29.545356833Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:41:29.54558659Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:29.545749197Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:29.545775976Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:41:29.545814608Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:41:29.545827766Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:41:29.545839778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:41:34.566927066Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:41:34.596698035Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:41:34.596789846Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:41:34.597938624Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:41:34.598211056Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:34.598526416Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:34.59857355Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:41:34.598589382Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:41:34.598602479Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:41:34.598613808Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:41:39.61475893Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:41:39.645887992Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:41:39.646003656Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:41:39.647123983Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:41:39.647377729Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:39.647582545Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:39.647623794Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:41:39.64764062Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:41:39.647654038Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:41:44.668550158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:41:44.697325346Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:41:44.69743997Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:41:44.69987784Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:41:44.700499566Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:44.700712916Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:44.700744471Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:41:44.700935104Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:41:44.700953018Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:41:44.700964834Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:41:49.715854838Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:41:49.744158183Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:41:49.744276034Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:41:49.74542046Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:41:49.745656685Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:49.745843049Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:49.745882417Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:41:49.745897514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:41:49.745910681Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:41:49.746378825Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:41:54.767602776Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:41:54.797175338Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:41:54.797319798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:41:54.798787183Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:41:54.799350958Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:54.799789814Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:54.800036339Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:41:54.800229346Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:41:54.801038468Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:41:54.801053099Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:41:59.818292181Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:41:59.845864003Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:41:59.845974618Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:41:59.847186318Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:41:59.847448313Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:59.847657504Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:41:59.847697212Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:41:59.84771149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:41:59.847724469Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:42:04.868402643Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:42:04.900633677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:42:04.900727208Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:42:04.902011554Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:42:04.902271773Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:04.902500646Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:04.902540223Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:42:04.902555101Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:42:04.902566581Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:42:04.902576593Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:42:09.924226747Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:42:09.954819702Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:42:09.954933316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:42:09.956113149Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:42:09.956314918Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:09.956642509Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:09.956674571Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:42:09.956690448Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:42:09.956704158Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:42:09.956716186Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:42:14.976624873Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:42:15.005275867Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:42:15.005429995Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:42:15.006751791Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:42:15.007034139Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:15.007279036Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:15.007308956Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:42:15.007324218Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:42:15.007376912Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:42:15.007389308Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:42:20.021299068Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:42:20.05284272Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:42:20.052957481Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:42:20.054048112Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:42:20.054228219Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:20.054399696Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:20.05442959Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:42:20.054445874Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:42:20.054459176Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:42:20.054471362Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:42:25.070284576Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:42:25.101224889Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:42:25.10138194Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:42:25.103445012Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:42:25.10383431Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:25.104217518Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:25.104575914Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:42:25.104595987Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:42:25.104694975Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:42:25.104709202Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:42:30.122128268Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:42:30.151585139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:42:30.15169899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:42:30.154299079Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:42:30.15450712Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:30.154649325Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:30.154677917Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:42:30.154692122Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:42:30.154723309Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:42:30.154735515Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:42:35.175898443Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:42:35.20508648Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:42:35.205214656Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:42:35.207323794Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:42:35.207600917Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:35.20780302Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:35.207850497Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:42:35.207903069Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:42:35.207917317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:42:35.20792852Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:42:40.223721999Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:42:40.25433911Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:42:40.254437638Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:42:40.255532886Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:42:40.255754689Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:40.255929478Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:40.255958363Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:42:40.255972249Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:42:40.255983661Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:42:40.255993438Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:42:45.277099276Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:42:45.30516207Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:42:45.305317645Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:42:45.306673587Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:42:45.306919085Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:45.307124798Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:45.307176035Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:42:45.307215352Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:42:45.307252585Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:42:45.307270258Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:42:50.326296496Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:42:50.357343841Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:42:50.357455155Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:42:50.358627046Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:42:50.358864181Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:50.359098767Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:50.359138664Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:42:50.359153807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:42:50.359165855Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:42:50.359244801Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:42:55.377467435Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:42:55.406117484Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:42:55.40626248Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:42:55.407280253Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:42:55.407515201Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:55.407715033Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:42:55.407741364Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:42:55.407755976Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:42:55.407768869Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:42:55.407780312Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:43:00.422624023Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:43:00.453175918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:43:00.453314652Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:43:00.454809213Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:43:00.455292745Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:00.455691821Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:00.455724275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:43:00.455739474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:43:00.4557521Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:43:00.455763637Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:43:05.475278022Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:43:05.5051292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:43:05.505229679Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:43:05.506549934Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:43:05.506717104Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:05.506853466Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:05.506882123Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:43:05.506896217Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:43:05.506909712Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:43:05.506920989Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:43:10.523998649Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:43:10.552309646Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:43:10.552600813Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:43:10.553831883Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:43:10.554035425Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:10.554183147Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:10.554216915Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:43:10.55426282Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:43:10.554276755Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:43:10.554288424Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:43:15.573376881Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:43:15.6049958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:43:15.605104042Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:43:15.606462915Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:43:15.606740552Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:15.606925876Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:15.606969902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:43:15.606985728Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:43:15.606998481Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:43:15.607369704Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:43:20.625287665Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:43:20.655043917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:43:20.655162608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:43:20.656227378Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:43:20.656609199Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:20.656815192Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:20.656855832Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:43:20.656871691Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:43:20.656943482Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:43:20.656956217Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:43:25.676267931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:43:25.706606505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:43:25.706705722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:43:25.707873322Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:43:25.708121414Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:25.708342818Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:25.708382101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:43:25.708396707Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:43:25.708410954Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:43:25.708831403Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:43:30.727303484Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:43:30.758591191Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:43:30.758682519Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:43:30.76027493Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:43:30.760816475Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:30.760975199Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:30.761000869Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:43:30.761016197Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:43:30.761029474Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:43:30.761041686Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:43:35.782848998Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:43:35.81221783Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:43:35.812762825Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:43:35.814178908Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:43:35.81469748Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:35.815142171Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:35.815254595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:43:35.815306174Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:43:35.815318901Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:43:35.815330594Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:43:40.829172898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:43:40.860761108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:43:40.860866306Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:43:40.861958692Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:43:40.86217114Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:40.862390132Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:40.862435152Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:43:40.862510787Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:43:40.862524427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:43:40.862536187Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:43:45.884971487Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:43:45.914751157Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:43:45.91493675Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:43:45.916091832Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:43:45.916336409Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:45.916638515Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:45.916682184Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:43:45.916697442Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:43:45.916710501Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:43:45.917038894Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:43:50.935100701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:43:50.965262688Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:43:50.965387128Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:43:50.966907529Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:43:50.967494999Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:50.96794035Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:50.968156242Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:43:50.968176981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:43:50.968191222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:43:50.968203063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:43:55.982361353Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:43:56.012676592Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:43:56.012787911Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:43:56.014137314Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:43:56.014334093Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:56.014514201Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:43:56.014556192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:43:56.014571977Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:43:56.014585254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:43:56.015062436Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:44:01.03110798Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:44:01.06076399Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:44:01.060868527Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:44:01.06234377Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:44:01.062534573Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:01.062672565Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:01.062712097Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:44:01.062728248Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:44:01.062782371Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:44:01.062794688Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:44:06.084295366Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:44:06.119825347Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:44:06.119924127Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:44:06.121344624Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:44:06.121559719Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:06.121749837Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:06.12180293Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:44:06.121818627Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:44:06.121832792Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:44:06.122259311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:44:11.141306155Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:44:11.170404519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:44:11.170500186Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:44:11.171591091Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:44:11.17180707Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:11.171980232Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:11.172023841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:44:11.172039542Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:44:11.172052113Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:44:11.172403732Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:44:16.187654543Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:44:16.218208425Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:44:16.218323181Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:44:16.219436016Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:44:16.219611977Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:16.219751517Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:16.219780618Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:44:16.219795991Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:44:16.219825416Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:44:16.219836169Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:44:21.238289298Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:44:21.267540385Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:44:21.267652715Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:44:21.269511347Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:44:21.270067882Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:21.270558236Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:21.270771868Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:44:21.270794723Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:44:21.270808415Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:44:21.270820394Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:44:26.292269551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:44:26.321693891Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:44:26.321829766Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:44:26.32294078Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:44:26.323171457Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:26.32340034Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:26.32344928Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:44:26.323464916Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:44:26.323530988Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:44:26.32354996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:44:31.343711552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:44:31.373421504Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:44:31.373528328Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:44:31.376036446Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:44:31.376247358Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:31.376416719Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:31.376541984Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:44:31.376560771Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:44:31.376573986Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:44:31.376585865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:44:36.393296781Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:44:36.421756573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:44:36.42194249Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:44:36.424098098Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:44:36.424542175Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:36.424794487Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:36.424848127Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:44:36.424866069Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:44:36.424880061Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:44:36.425300618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:44:41.446783326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:44:41.475634471Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:44:41.475732546Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:44:41.477575377Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:44:41.477758954Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:41.478224891Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:41.478272453Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:44:41.478290634Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:44:41.47830398Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:44:41.478315873Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:44:46.498779413Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:44:46.529877001Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:44:46.529971841Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:44:46.531693479Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:44:46.532230004Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:46.532818409Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:46.532877913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:44:46.53289507Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:44:46.532906666Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:44:46.533294037Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:44:51.554305313Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:44:51.581182602Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:44:51.581293984Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:44:51.583118313Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:44:51.583401943Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:51.583679024Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:51.583728339Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:44:51.583767727Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:44:51.583798122Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:44:51.583809546Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:44:56.604320094Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:44:56.634925208Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:44:56.635036146Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:44:56.638492687Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:44:56.638956656Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:56.639116219Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:44:56.639146904Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:44:56.639163387Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:44:56.63917608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:44:56.639188124Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:45:01.671224706Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:45:01.718460964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:45:01.718578432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:45:01.723103091Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:45:01.724136773Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:01.725290693Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:01.725390203Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:45:01.72540883Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:45:01.72542276Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:45:01.725435684Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:45:06.744274954Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:45:06.774610296Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:45:06.774719896Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:45:06.776499873Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:45:06.777086972Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:06.777632583Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:06.777754198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:45:06.777779054Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:45:06.777793171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:45:06.777805261Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:45:11.7942663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:45:11.82496586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:45:11.825059795Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:45:11.828089728Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:45:11.828403226Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:11.828776364Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:11.828815397Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:45:11.828830753Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:45:11.82884339Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:45:11.828854873Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:45:16.851187514Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:45:16.878935778Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:45:16.879041297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:45:16.880042544Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:45:16.880256989Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:16.880540977Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:16.880589331Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:45:16.880606041Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:45:16.880619477Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:45:16.881033209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:45:21.897496398Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:45:21.929048077Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:45:21.929129711Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:45:21.930312085Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:45:21.930566954Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:21.93076347Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:21.930792661Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:45:21.930806707Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:45:21.930817551Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:45:21.930828292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:45:26.950428642Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:45:26.978854227Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:45:26.978962833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:45:26.980111286Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:45:26.980411716Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:26.980653634Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:26.980684937Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:45:26.980700097Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:45:26.980729392Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:45:26.980740626Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:45:31.998840476Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:45:32.030458371Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:45:32.030547313Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:45:32.032382066Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:45:32.03298867Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:32.03347476Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:32.033722506Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:45:32.033813203Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:45:32.033828844Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:45:32.033841521Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:45:37.052296531Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:45:37.083805578Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:45:37.083936764Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:45:42.105731821Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:45:42.148570004Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:45:42.148709855Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:45:42.150417458Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:45:42.151012568Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:42.151425149Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:42.151477343Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:45:42.151494525Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:45:42.151899968Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T04:45:42.152349606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:45:42.152367919Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:45:47.16939076Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:45:47.198956168Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:45:47.199069322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:45:47.200838831Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:45:47.201311331Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:47.201739463Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:47.201850903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:45:47.201869161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:45:47.201884995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:45:47.201897278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:45:52.218265629Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:45:52.250118108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:45:52.250216657Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:45:52.252156533Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:45:52.252893409Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:52.253415376Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:52.253454241Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:45:52.253471564Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:45:52.253486529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:45:52.253498982Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:45:57.267290499Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:45:57.297280968Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:45:57.297371277Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:45:57.298469592Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:45:57.298701496Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:57.298935765Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:45:57.298979118Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:45:57.298994115Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:45:57.299059909Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:45:57.299072905Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:46:02.315619603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:46:02.346808058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:46:02.346921238Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:46:02.348551619Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:46:02.349090119Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:02.349294324Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:02.349325733Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:46:02.349342203Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:46:02.349355992Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:46:02.349367897Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:46:07.366704364Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:46:07.395893526Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:46:07.396004732Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:46:07.397175494Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:46:07.397438659Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:07.397623409Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:07.39765261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:46:07.397667886Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:46:07.39768083Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:46:07.397692666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:46:12.415305212Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:46:12.46158095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:46:12.46167292Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:46:12.463419179Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:46:12.463956507Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:12.464354986Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:12.464389527Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:46:12.464404904Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:46:12.464502181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:46:12.464513555Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:46:17.482847967Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:46:17.509067452Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:46:17.509160048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:46:17.511053382Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:46:17.51147817Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:17.511989722Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:17.512110932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:46:17.512144119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:46:17.512158523Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:46:17.512169796Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:46:22.531273564Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:46:22.563843715Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:46:22.563954395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:46:22.566037769Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:46:22.566600301Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:22.566762704Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:22.566786343Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:46:22.566801343Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:46:22.566839523Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:46:22.566851544Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:46:27.584017393Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:46:27.611915182Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:46:27.612009617Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:46:27.613407895Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:46:27.613697195Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:27.613885761Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:27.613916045Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:46:27.613961762Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:46:27.61397494Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:46:27.613987412Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:46:32.631277673Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:46:32.661686416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:46:32.661790666Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:46:32.662838324Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:46:32.663018654Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:32.663174579Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:32.663208756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:46:32.663223716Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:46:32.663629236Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:46:32.663648238Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:46:37.677639467Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:46:37.708964352Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:46:37.709080249Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:46:37.711159648Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:46:37.711666413Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:37.711894084Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:37.711921726Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:46:37.711936791Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:46:37.711949763Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:46:37.711961454Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:46:42.732297313Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:46:42.760536159Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:46:42.760633784Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:46:42.762868691Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:46:42.763373708Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:42.763571688Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:42.763602132Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:46:42.763616885Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:46:42.763628268Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:46:42.763637785Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:46:47.781418414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:46:47.810007131Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:46:47.810121789Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:46:47.811189148Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:46:47.811407285Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:47.811553942Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:47.811576436Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:46:47.811592155Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:46:47.811604672Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:46:47.811616171Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:46:52.829723279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:46:52.859360765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:46:52.859449613Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:46:52.860697325Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:46:52.86094389Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:52.861145329Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:52.861187706Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:46:52.861204935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:46:52.861297022Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:46:52.861310475Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:46:57.877327289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:46:57.907073681Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:46:57.907186459Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:46:57.909587415Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:46:57.910064915Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:57.910501027Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:46:57.91073254Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:46:57.91093951Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:46:57.91153834Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:46:57.911557794Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:47:02.931408785Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:47:02.959627053Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:47:02.959739466Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:47:02.96130641Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:47:02.961776423Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:02.962334451Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:02.962372003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:47:02.962388757Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:47:02.962402196Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:47:02.962413745Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:47:07.977953098Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:47:08.007322116Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:47:08.007444132Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:47:08.008699686Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:47:08.008916464Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:08.009078636Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:08.009103582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:47:08.009119112Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:47:08.009132536Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:47:08.009144754Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:47:13.030783619Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:47:13.061361065Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:47:13.06148514Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:47:13.062556262Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:47:13.063573911Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:13.063918476Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:13.063952619Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:47:13.063968373Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:47:13.063981687Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:47:13.063993257Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:47:18.081288756Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:47:18.108810205Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:47:18.108919483Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:47:18.110509913Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:47:18.111071362Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:18.111561578Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:18.11175797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:47:18.111779473Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:47:18.111794045Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:47:18.111806021Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:47:23.131334704Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:47:23.162126355Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:47:23.162209011Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:47:23.163384953Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:47:23.163674543Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:23.163917214Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:23.163956046Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:47:23.163970824Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:47:23.163984034Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:47:23.163995418Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:47:28.178297652Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:47:28.205482667Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:47:28.205601907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:47:28.206837133Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:47:28.207080423Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:28.207299925Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:28.207327318Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:47:28.207341601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:47:28.207354538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:47:28.207366591Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:47:33.226773731Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:47:33.255409882Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:47:33.255498313Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:47:33.256608435Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:47:33.256853427Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:33.257071848Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:33.257102397Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:47:33.257118738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:47:33.257158312Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:47:33.25717013Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:47:38.274539376Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:47:38.304127964Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:47:38.304217782Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:47:38.305937258Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:47:38.306342772Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:38.306715649Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:38.306747888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:47:38.306762486Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:47:38.306776546Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:47:38.306788586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:47:43.323308402Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:47:43.351095308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:47:43.351199898Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:47:43.352316826Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:47:43.352666161Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:43.352858266Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:43.352906488Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:47:43.352924573Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:47:43.352938394Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:47:43.353307952Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:47:48.368219608Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:47:48.395575698Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:47:48.395691966Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:47:48.396829652Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:47:48.397094246Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:48.397280246Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:48.397309411Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:47:48.397324269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:47:48.397347847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:47:48.397359411Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:47:53.415083726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:47:53.444759166Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:47:53.444871628Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:47:53.447947589Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:47:53.448597028Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:53.448814181Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:53.448845334Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:47:53.448859734Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:47:53.448873432Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:47:53.448883303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:47:58.465040555Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:47:58.493813208Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:47:58.4939322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:47:58.495115322Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:47:58.495456074Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:58.495987262Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:47:58.496024227Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:47:58.496037065Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:47:58.496048576Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:47:58.496060147Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:48:03.512331722Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:48:03.54443518Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:48:03.544690798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:48:03.546631523Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:48:03.546855921Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:03.547037602Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:03.54706328Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:48:03.547078606Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:48:03.54709032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:48:03.547101299Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:48:08.560470461Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:48:08.592403881Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:48:08.592625472Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:48:08.593779709Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:48:08.594001579Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:08.594208062Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:08.594256371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:48:08.594274828Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:48:08.594288614Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:48:08.594655063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:48:13.614486773Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:48:13.642835795Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:48:13.642930058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:48:13.64532335Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:48:13.645511054Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:13.645672183Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:13.645728205Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:48:13.6457432Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:48:13.645754575Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:48:13.646140058Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:48:18.66474085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:48:18.695270032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:48:18.695357815Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:48:18.696431426Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:48:18.69680481Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:18.697014696Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:18.697072266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:48:18.697090127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:48:18.697529463Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:48:18.697548035Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:48:23.715664351Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:48:23.74418523Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:48:23.744302906Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:48:23.746224126Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:48:23.746755047Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:23.747150417Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:23.747184401Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:48:23.747199481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:48:23.747212752Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:48:23.747224544Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:48:28.764228531Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:48:28.791588283Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:48:28.79166761Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:48:28.793129861Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:48:28.794308114Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:28.794503139Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:28.79453457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:48:28.794549256Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:48:28.794562742Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:48:28.794574107Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:48:33.816287133Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:48:33.845651114Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:48:33.845772298Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:48:33.846869229Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:48:33.84712265Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:33.847385031Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:33.847420198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:48:33.847434285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:48:33.847446624Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:48:33.847457528Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:48:38.861088445Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:48:38.890318269Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:48:38.890426121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:48:38.89154796Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:48:38.891728398Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:38.891889901Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:38.891936834Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:48:38.891951929Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:48:38.891964912Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:48:38.892584229Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:48:43.906899335Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:48:43.936866134Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:48:43.936959824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:48:43.938671765Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:48:43.939182277Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:43.93966574Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:43.939715922Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:48:43.93973172Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:48:43.939745271Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:48:43.940173388Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:48:48.95566308Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:48:48.984348253Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:48:48.98449064Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:48:48.986071986Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:48:48.98665325Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:48.987100309Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:48.987132707Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:48:48.987148482Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:48:48.987161087Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:48:48.987172748Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:48:54.003292625Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:48:54.03456982Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:48:54.034650003Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:48:54.035701628Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:48:54.035869424Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:54.03600646Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:54.036028801Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:48:54.036043924Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:48:54.036056852Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:48:54.036068395Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:48:59.049445188Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:48:59.079151567Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:48:59.079272105Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:48:59.08093043Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:48:59.081261219Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:59.081507052Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:48:59.081566984Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:48:59.081583342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:48:59.081640524Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:48:59.081653458Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:49:04.102471173Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:49:04.133586767Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:49:04.133705355Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:49:04.135092755Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:49:04.135613099Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:04.136031011Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:04.136130242Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:49:04.136147851Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:49:04.136186954Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:49:04.136198775Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:49:09.154837441Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:49:09.184797658Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:49:09.184918869Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:49:09.186642707Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:49:09.186850464Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:09.187045486Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:09.187128879Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:49:09.187144753Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:49:09.187180027Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:49:09.187192082Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:49:14.20593871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:49:14.236159414Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:49:14.236265716Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:49:14.237440772Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:49:14.237728931Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:14.237909374Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:14.237940234Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:49:14.237956141Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:49:14.237969363Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:49:14.237980623Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:49:19.255294794Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:49:19.284041531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:49:19.284213936Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:49:19.287252073Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:49:19.287722171Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:19.288205964Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:19.288252038Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:49:19.288287318Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:49:19.2883013Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:49:19.288313395Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:49:24.311683654Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:49:24.340687761Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:49:24.340851768Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:49:24.342133041Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:49:24.342382853Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:24.342612555Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:24.342637037Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:49:24.342651192Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:49:24.342679549Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:49:24.342691614Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:49:29.356061849Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:49:29.3873576Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:49:29.387469621Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:49:29.388641516Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:49:29.38885571Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:29.38901854Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:29.389049836Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:49:29.38909558Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:49:29.389109739Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:49:29.38912151Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:49:34.410525972Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:49:34.439538253Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:49:34.439670958Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:49:34.4412797Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:49:34.441484118Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:34.441672539Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:34.441710102Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:49:34.441726094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:49:34.441752118Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:49:34.441763885Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:49:39.455189203Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:49:39.483432548Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:49:39.483544126Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:49:39.485254555Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:49:39.485895181Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:39.486358925Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:39.486499657Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:49:39.486521802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:49:39.4865354Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:49:39.486547606Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:49:44.503638727Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:49:44.534464314Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:49:44.534565203Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:49:44.535687075Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:49:44.535933978Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:44.536137074Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:44.53617458Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:49:44.536191608Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:49:44.536203812Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:49:44.536698641Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:49:49.550692449Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:49:49.580618357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:49:49.58070473Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:49:49.581765482Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:49:49.581984373Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:49.582162765Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:49.582195297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:49:49.582210705Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:49:49.582224838Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:49:49.582590783Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:49:54.598775909Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:49:54.625677967Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:49:54.625776049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:49:54.626807113Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:49:54.627002916Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:54.627165128Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:54.627193493Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:49:54.627230491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:49:54.62727332Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:49:54.627285072Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:49:59.643564113Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:49:59.673858086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:49:59.673970039Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:49:59.675321938Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:49:59.675783914Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:59.676166856Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:49:59.676197871Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:49:59.6762135Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:49:59.676227483Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:49:59.676249942Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:50:04.692151231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:50:04.722140988Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:50:04.722487058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:50:04.72387312Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:50:04.724196221Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:04.724583554Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:04.724643826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:50:04.724659548Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:50:04.724743802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:50:04.724755381Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:50:09.740278653Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:50:09.769873371Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:50:09.769987885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:50:09.771149213Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:50:09.771415619Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:09.771627461Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:09.771667732Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:50:09.771685458Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:50:09.771746614Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:50:09.771757553Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:50:14.788291678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:50:14.819040243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:50:14.819144989Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:50:14.820517672Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:50:14.820874306Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:14.821101927Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:14.821163077Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:50:14.821192471Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:50:14.821205831Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:50:14.821225166Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:50:19.839264865Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:50:19.868182519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:50:19.868306842Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:50:19.870164619Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:50:19.870421819Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:19.870602117Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:19.870629571Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:50:19.870644792Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:50:19.870657958Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:50:19.870669514Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:50:24.886587609Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:50:24.915078855Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:50:24.915169373Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:50:24.91635087Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:50:24.916629984Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:24.916815515Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:24.916861961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:50:24.91687759Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:50:24.916891661Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:50:24.917303617Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:50:29.933328026Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:50:29.960358083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:50:29.960561139Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:50:29.961723873Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:50:29.961931351Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:29.962107949Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:29.962134663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:50:29.962150206Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:50:29.962162906Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:50:29.962174326Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:50:34.978454806Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:50:35.006921487Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:50:35.007017387Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:50:35.008263307Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:50:35.008558521Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:35.008760494Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:35.008801145Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:50:35.008815109Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:50:35.0088268Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:50:35.008835813Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:50:40.029284038Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:50:40.058972127Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:50:40.059064628Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:50:40.060678507Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:50:40.061149233Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:40.061578861Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:40.061716687Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:50:40.062007493Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:50:40.062029481Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:50:40.062041584Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:50:45.078589332Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:50:45.110252501Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:50:45.110350777Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:50:45.111494899Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:50:45.111707628Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:45.111867902Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:45.111894932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:50:45.111910645Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:50:45.111923499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:50:45.111935056Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:50:50.130685274Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:50:50.160735936Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:50:50.160849Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:50:50.16191305Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:50:50.162148901Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:50.162339819Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:50.162370014Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:50:50.162385208Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:50:50.16241464Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:50:50.162427638Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:50:55.182535158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:50:55.210205993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:50:55.210318681Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:50:55.211894927Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:50:55.212587106Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:55.213080238Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:50:55.213208616Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:50:55.213242683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:50:55.21325705Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:50:55.213269493Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:51:00.230274747Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:51:00.262030109Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:51:00.262122737Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:51:00.263254835Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:51:00.263442995Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:00.263579128Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:00.263601619Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:51:00.263616972Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:51:00.263629824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:51:00.263641698Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:51:05.281552895Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:51:05.312822253Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:51:05.312922196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:51:05.314676388Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:51:05.314874578Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:05.31504431Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:05.315076415Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:51:05.315092469Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:51:05.315106067Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:51:05.315118239Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:51:10.33061933Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:51:10.359940497Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:51:10.360125765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:51:10.361354341Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:51:10.361535168Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:10.361674894Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:10.361698058Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:51:10.361712381Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:51:10.361726897Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:51:10.361738647Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:51:15.377304858Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:51:15.409186164Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:51:15.40931923Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:51:15.411197185Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:51:15.411695078Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:15.411852575Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:15.41187606Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:51:15.411891496Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:51:15.411905779Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:51:15.41191718Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:51:20.425319079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:51:20.457102248Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:51:20.457213521Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:51:20.458412949Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:51:20.458708717Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:25.474963977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:51:25.503892659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:51:25.504066114Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:51:25.505510294Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:51:25.505776636Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:25.506044095Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:25.506074906Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:51:25.506089788Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:51:25.506102537Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:51:25.506113758Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:51:30.522736781Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:51:30.550701853Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:51:30.5508393Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:51:30.552172366Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:51:30.552408936Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:30.55273021Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:30.552762785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:51:30.552778824Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:51:30.55279065Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:51:30.552801567Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:51:35.572415457Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:51:35.600669818Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:51:35.600764085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:51:35.602293429Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:51:35.602699758Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:35.603198078Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:35.603255873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:51:35.603272793Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:51:35.603286212Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:51:35.60329823Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:51:40.618307604Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:51:40.647460702Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:51:40.647562227Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:51:40.649108864Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:51:40.649435587Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:40.649688144Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:40.64972754Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:51:40.649766387Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:51:40.649780265Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:51:40.649792719Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:51:45.670316081Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:51:45.699729529Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:51:45.699842918Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:51:45.70107232Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:51:45.701326869Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:45.701518262Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:45.701557797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:51:45.701573973Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:51:45.701587541Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:51:45.701930822Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:51:50.717252943Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:51:50.749251295Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:51:50.749339402Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:51:50.750439828Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:51:50.750654084Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:50.750853673Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:50.750886163Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:51:50.750900509Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:51:50.750913736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:51:50.750924861Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:51:55.770313858Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:51:55.799048646Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:51:55.799145283Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:51:55.80034309Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:51:55.800713873Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:55.80107819Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:51:55.801105525Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:51:55.801121914Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:51:55.801133317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:51:55.80114467Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:52:00.819316306Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:52:00.847828761Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:52:00.847913817Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:52:00.849226564Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:52:00.849533442Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:00.849764932Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:00.849795101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:52:00.849836534Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:52:00.849867799Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:52:00.84988073Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:52:05.869155676Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:52:05.897748987Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:52:05.897862259Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:52:05.899204924Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:52:05.899474682Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:05.899650384Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:05.899689969Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:52:05.899706177Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:52:05.899717954Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:52:05.899727539Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:52:10.917220318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:52:10.948331329Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:52:10.94856787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:52:10.94968865Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:52:10.949946107Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:10.950112222Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:10.950155426Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:52:10.950172839Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:52:10.950185551Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:52:10.950529236Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:52:15.96776569Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:52:15.996393401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:52:15.996545834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:52:15.997580998Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:52:15.99787615Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:15.998065252Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:15.998109298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:52:15.998125136Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:52:15.998138036Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:52:15.998493832Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:52:21.015710284Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:52:21.048103107Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:52:21.048196619Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:52:21.049491876Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:52:21.04968381Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:21.049843541Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:21.049884775Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:52:21.049899653Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:52:21.049913356Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:52:21.050262485Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:52:26.071847522Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:52:26.102044474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:52:26.102146114Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:52:26.104035562Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:52:26.104304562Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:26.104582455Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:26.104627306Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:52:26.10464385Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:52:26.104657903Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:52:26.105035396Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:52:31.122303701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:52:31.14984035Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:52:31.149948859Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:52:31.152002576Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:52:31.152767322Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:31.153281601Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:31.15340386Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:52:31.153422076Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:52:31.153436256Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:52:31.153448559Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:52:36.170544938Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:52:36.197606071Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:52:36.197728401Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:52:36.198782334Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:52:36.199065621Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:36.199320759Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:36.199351159Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:52:36.199368406Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:52:36.199380874Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:52:36.19939173Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:52:41.215303182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:52:41.246303244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:52:41.24644195Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:52:41.247611249Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:52:41.247888026Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:41.248122329Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:41.248151117Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:52:41.24816703Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:52:41.24818004Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:52:41.248191487Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:52:46.266281175Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:52:46.296814895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:52:46.296932332Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:52:46.300121622Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:52:46.30037706Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:46.300762744Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:46.30080862Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:52:46.300825728Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:52:46.300839032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:52:46.301118272Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:52:51.319704337Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:52:51.350622989Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:52:51.350712961Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:52:51.351698307Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:52:51.351920582Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:51.352081171Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:51.352149895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:52:51.352165717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:52:51.352179687Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:52:51.352628125Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:52:56.37131254Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:52:56.399704078Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:52:56.399815589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:52:56.401426312Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:52:56.401929384Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:56.402349446Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:52:56.402576345Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:52:56.402822365Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:52:56.403139994Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T04:52:56.403576808Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:52:56.403613338Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:53:01.432045064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:53:01.47053702Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:53:01.470653401Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:53:01.473255789Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:53:01.473452203Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:01.473595981Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:01.473625738Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:53:01.473667494Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:53:01.473690192Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:53:01.473702666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:53:06.492935237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:53:06.522419291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:53:06.522558041Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:53:06.525048465Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:53:06.525306025Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:06.525497201Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:06.525525853Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:53:06.525539555Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:53:06.525550901Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:53:06.525561629Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:53:11.544287554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:53:11.573862672Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:53:11.57395276Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:53:11.575434572Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:53:11.575905825Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:11.576333292Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:11.576528508Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:53:11.576829308Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:53:11.576880336Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:53:11.576892799Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:53:16.595271096Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:53:16.624414954Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:53:16.624609072Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:53:16.625964039Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:53:16.626563964Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:16.62697642Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:16.627188137Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:53:16.627207514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:53:16.627402319Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:53:16.627418934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:53:21.64807326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:53:21.677759647Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:53:21.677875599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:53:21.679718654Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:53:21.680221845Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:21.680406415Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:21.680433197Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:53:21.680498224Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:53:21.680512724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:53:21.680524389Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:53:26.696884867Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:53:26.726853632Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:53:26.726968494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:53:26.728552593Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:53:26.728768487Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:26.728947546Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:26.728982375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:53:26.728997676Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:53:26.729011501Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:53:26.7290235Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:53:31.745292561Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:53:31.776267472Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:53:31.776399693Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:53:31.777667107Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:53:31.777850575Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:31.778006361Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:31.7780359Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:53:31.778051033Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:53:31.77806589Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:53:31.778077644Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:53:36.79316262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:53:36.822589044Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:53:36.82269306Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:53:36.824076615Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:53:36.824720979Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:36.825102953Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:36.825137061Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:53:36.825152965Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:53:36.825166001Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:53:36.825176668Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:53:41.842415988Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:53:41.872808109Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:53:41.872905631Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:53:41.875014474Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:53:41.875620228Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:41.87614305Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:41.876255109Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:53:41.876273355Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:53:41.876321994Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:53:41.876335351Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:53:46.891273047Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:53:46.92006938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:53:46.920171041Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:53:46.921487621Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:53:46.921743058Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:46.921998871Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:46.922056816Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:53:46.922072703Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:53:46.922084915Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:53:46.922096971Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:53:51.942986881Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:53:51.974035689Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:53:51.974126965Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:53:51.975304952Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:53:51.975578338Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:51.975785089Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:51.975825426Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:53:51.97584225Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:53:51.975855523Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:53:51.976217687Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:53:56.996536439Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:53:57.027572478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:53:57.02769334Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:53:57.028940322Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:53:57.029213042Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:57.029444647Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:53:57.029493747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:53:57.029509794Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:53:57.029524629Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:53:57.029536392Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:54:02.05835301Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:54:02.169157076Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:54:02.169345683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:54:02.17091739Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:54:02.173014345Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:02.175756091Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:02.175802941Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:54:02.175819392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:54:02.175833158Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:54:02.175844373Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:54:07.209259714Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:54:07.236606606Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:54:07.236696224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:54:07.237795803Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:54:07.23797261Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:07.238115535Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:07.238145346Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:54:07.238159994Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:54:07.23817326Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:54:07.238184928Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:54:12.257536566Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:54:12.287531405Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:54:12.287613871Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:54:12.290591281Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:54:12.291045188Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:12.291371683Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:12.291438055Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:54:12.291453218Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:54:12.291474113Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:54:12.29148573Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:54:17.302966445Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:54:17.33221025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:54:17.332324734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:54:17.33355783Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:54:17.333742038Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:17.33387866Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:17.333901276Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:54:17.333917118Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:54:17.333930439Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:54:17.333942197Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:54:22.350291922Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:54:22.380071704Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:54:22.380178258Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:54:22.381756549Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:54:22.382076469Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:22.382369551Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:22.382435307Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:54:22.382453988Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:54:22.382466107Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:54:22.38284093Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:54:27.39765582Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:54:27.426303273Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:54:27.4264191Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:54:27.427979682Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:54:27.428513172Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:27.428895286Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:27.4289445Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:54:27.428960488Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:54:27.428974706Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:54:27.429807058Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:54:32.449512901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:54:32.478678259Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:54:32.47878698Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:54:32.479825626Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:54:32.479992144Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:32.480129051Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:32.480152529Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:54:32.480166863Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:54:32.480180073Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:54:32.48019153Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:54:37.495196053Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:54:37.526763561Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:54:37.526861935Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:54:37.528769674Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:54:37.529302534Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:37.529798689Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:37.530028008Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:54:37.530050994Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:54:37.530064439Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:54:37.530077155Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:54:42.548983406Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:54:42.579576235Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:54:42.579670561Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:54:42.581736577Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:54:42.581988111Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:42.582161046Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:42.58219024Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:54:42.582204621Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:54:42.582216939Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:54:42.582227749Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:54:47.596603745Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:54:47.627770251Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:54:47.627864021Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:54:47.629005897Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:54:47.629262237Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:47.630015641Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:47.630073431Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:54:47.63008969Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:54:47.630102615Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:54:47.630114404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:54:52.649163228Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:54:52.678493391Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:54:52.678588926Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:54:52.681262059Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:54:52.681484563Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:52.681685098Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:52.681717911Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:54:52.681734252Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:54:52.681747181Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:54:52.681758624Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:54:57.699887967Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:54:57.728662971Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:54:57.728782049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:54:57.733071451Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:54:57.733603541Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:57.733995346Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:54:57.734205844Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:54:57.734396639Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:54:57.734416023Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:54:57.734427779Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:55:02.751031129Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:55:02.781360225Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:55:02.781450674Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:55:02.783573898Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:55:02.783943598Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:02.784277008Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:02.784313886Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:55:02.784329329Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:55:02.784342479Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:55:02.784354089Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:55:07.79802858Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:55:07.829213288Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:55:07.829350875Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:55:07.83043805Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:55:07.830628794Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:07.830806587Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:07.830853842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:55:07.830869299Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:55:07.830928384Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:55:07.830940654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:55:12.852033114Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:55:12.878520664Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:55:12.878631477Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:55:12.880837423Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:55:12.881042136Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:12.881205459Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:12.881267717Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:55:12.881289798Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:55:12.881303471Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:55:12.881315525Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:55:17.898286473Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:55:17.927438211Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:55:17.927561238Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:55:17.929444763Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:55:17.929871073Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:17.930259958Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:17.930296023Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:55:17.930312315Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:55:17.930325866Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:55:17.930337545Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:55:22.951146008Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:55:22.980262533Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:55:22.980371575Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:55:22.981562838Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:55:22.981815155Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:22.982038866Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:22.982079528Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:55:22.982095984Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:55:22.982110092Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:55:22.982481992Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:55:27.999297478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:55:28.030440122Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:55:28.030529223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:55:28.033298572Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:55:28.03354363Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:28.033736209Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:28.033783237Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:55:28.033798106Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:55:28.033810004Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:55:28.034054041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:55:33.052308995Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:55:33.083423228Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:55:33.083532888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:55:33.086004098Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:55:33.086278354Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:33.086521769Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:33.086580266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:55:33.08659794Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:55:33.086609977Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:55:33.086620079Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:55:38.103292541Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:55:38.132736537Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:55:38.132841823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:55:38.13390444Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:55:38.134075705Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:38.134209717Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:38.134248076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:55:38.134263943Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:55:38.134277081Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:55:38.134288684Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:55:43.151319065Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:55:43.183944948Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:55:43.184058033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:55:43.185823495Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:55:43.186224306Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:43.186708166Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:43.186741682Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:55:43.186757154Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:55:43.186771806Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:55:43.186783385Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:55:48.203285314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:55:48.231089403Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:55:48.23118077Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:55:48.232293543Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:55:48.232626272Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:48.232818008Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:48.232885348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:55:48.23290169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:55:48.233269622Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:55:48.233286079Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:55:53.252282167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:55:53.283306677Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:55:53.283403391Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:55:53.285139061Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:55:53.28545971Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:53.285997185Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:53.286043934Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:55:53.286059198Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:55:53.286071771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:55:53.286510819Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:55:58.30249088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:55:58.332103196Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:55:58.332204225Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:55:58.33337168Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:55:58.333592292Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:58.333777647Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:55:58.333814796Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:55:58.333830151Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:55:58.33384236Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:55:58.334192319Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:56:03.351950302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:56:03.381918059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:56:03.382018226Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:56:03.383149916Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:56:03.383484275Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:03.383722537Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:03.38376991Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:56:03.383787437Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:56:03.383845059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:56:03.383857095Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:56:08.40427826Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:56:08.435087982Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:56:08.435211768Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:56:08.436216011Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:56:08.436558737Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:08.436738826Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:08.436764756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:56:08.436779209Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:56:08.436792336Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:56:08.436804349Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:56:13.45622041Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:56:13.484997725Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:56:13.48508765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:56:13.486940795Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:56:13.487259034Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:13.487508176Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:13.48755848Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:56:13.487573943Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:56:13.487588715Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:56:13.487699434Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:56:18.503105714Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:56:18.534400307Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:56:18.534486283Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:56:18.5355307Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:56:18.535765455Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:18.535940483Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:18.536016003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:56:18.536034746Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:56:18.536047819Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:56:18.536481935Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:56:23.550393824Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:56:23.581444933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:56:23.581555055Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:56:23.583294771Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:56:23.583831331Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:23.584302294Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:23.584632756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:56:23.584770591Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:56:23.584786568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:56:23.584799041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:56:28.600288433Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:56:28.629888026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:56:28.629998105Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:56:28.631096949Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:56:28.631366825Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:28.631589973Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:28.631619208Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:56:28.631634302Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:56:28.631647166Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:56:28.631658532Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:56:33.6506768Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:56:33.678998652Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:56:33.679106596Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:56:33.680159976Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:56:33.680707101Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:33.680887772Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:33.680918975Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:56:33.680970867Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:56:33.680984725Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:56:33.680996441Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:56:38.696031964Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:56:38.72303059Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:56:38.72316215Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:56:38.724296011Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:56:38.724685053Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:38.724931849Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:38.724972965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:56:38.725024651Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:56:38.725038516Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:56:38.725050137Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:56:43.745296126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:56:43.772779861Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:56:43.772960877Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:56:43.77458039Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:56:43.774987497Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:43.775206502Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:43.775272334Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:56:43.77528931Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:56:43.775302323Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:56:43.775655833Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:56:48.79229761Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:56:48.823841538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:56:48.823935522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:56:48.825128947Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:56:48.825338437Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:48.825500734Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:48.825524101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:56:48.825539314Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:56:48.825552988Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:56:48.825564967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:56:53.845462104Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:56:53.873652297Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:56:53.873745359Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:56:53.874834288Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:56:53.875023793Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:53.875181156Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:53.8752081Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:56:53.875222714Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:56:53.875313629Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:56:53.87566141Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:56:58.892105712Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:56:58.924177975Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:56:58.924289321Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:56:58.926865481Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:56:58.92702934Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:58.927176973Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:56:58.927201326Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:56:58.927215875Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:56:58.927228612Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:56:58.927252662Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:57:03.946992151Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:57:03.978001638Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:57:03.978094644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:57:03.97920283Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:57:03.979423522Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:03.979571401Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:03.979595593Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:57:03.979611749Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:57:03.979625004Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:57:03.979636838Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:57:08.995542309Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:57:09.025968753Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:57:09.026086398Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:57:09.027528268Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:57:09.028135149Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:09.028342311Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:09.028420416Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:57:09.028435865Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:57:09.028467372Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:57:09.028479434Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:57:14.048280863Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:57:14.077751755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:57:14.07784469Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:57:14.078906594Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:57:14.079088963Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:14.0792284Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:14.079285236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:57:14.079301777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:57:14.079312966Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:57:14.07932307Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:57:19.0995624Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:57:19.130551735Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:57:19.130672543Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:57:19.131807888Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:57:19.132006083Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:19.132165304Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:19.132200787Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:57:19.132215458Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:57:19.132228165Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:57:19.132265794Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:57:24.153742857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:57:24.183456209Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:57:24.183564506Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:57:24.184796739Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:57:24.185051179Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:24.18524516Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:24.185282895Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:57:24.185299001Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:57:24.185726685Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:57:24.185747079Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:57:29.20057279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:57:29.231922598Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:57:29.23201589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:57:29.233588121Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:57:29.234046429Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:29.234433977Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:29.23454765Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:57:29.234570623Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:57:29.234584717Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:57:29.234594492Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:57:34.250735945Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:57:34.281878017Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:57:34.281972065Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:57:34.283798881Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:57:34.284394222Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:34.285045747Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:34.285334888Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:57:34.285359031Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:57:34.285375152Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:57:34.285387694Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:57:39.299464987Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:57:39.330261532Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:57:39.330348506Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:57:39.333046584Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:57:39.333305536Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:39.333484689Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:39.333513398Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:57:39.333529331Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:57:39.333542625Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:57:39.333554304Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:57:44.34937175Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:57:44.379931196Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:57:44.380066041Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:57:44.381333759Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:57:44.38153722Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:44.381697517Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:44.381739852Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:57:44.381756961Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:57:44.381807404Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:57:44.381820282Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:57:49.397442494Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:57:49.428259361Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:57:49.428370146Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:57:49.429993843Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:57:49.430435431Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:49.430585995Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:49.430618314Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:57:49.430631812Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:57:49.430643402Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:57:49.43065377Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:57:54.444929454Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:57:54.473282255Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:57:54.473360885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:57:54.474858684Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:57:54.475383656Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:54.475813847Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:54.475926069Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:57:54.475948957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:57:54.475963286Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:57:54.475975777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:57:59.493278505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:57:59.521873193Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:57:59.521991784Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:57:59.523148633Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:57:59.523361697Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:59.523527562Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:57:59.523556487Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:57:59.523572485Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:57:59.523585967Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:57:59.5235976Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:58:04.544167071Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:58:04.575320946Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:58:04.575441739Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:58:04.577295898Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:58:04.577645636Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:04.577922222Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:04.577983964Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:58:04.577999988Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:58:04.578013278Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:58:04.578379155Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:58:09.596785604Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:58:09.625692646Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:58:09.625807723Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:58:09.62822667Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:58:09.628645258Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:09.628896498Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:09.62893478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:58:09.628951185Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:58:09.628994636Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:58:09.62900707Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:58:14.649279678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:58:14.678327203Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:58:14.678414748Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:58:14.679499486Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:58:14.680134471Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:14.68040034Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:14.68058302Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:58:14.680602553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:58:14.680666602Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:58:14.680679281Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:58:19.698381232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:58:19.728974369Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:58:19.729083048Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:58:19.73014523Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:58:19.730360691Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:19.730524815Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:19.730563425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:58:19.730578815Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:58:19.73091663Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:58:19.730932092Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:58:24.74845079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:58:24.777331395Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:58:24.777440169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:58:24.779058081Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:58:24.779423449Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:24.78009297Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:24.780126844Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:58:24.780142509Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:58:24.780156236Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:58:24.780167666Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:58:29.797285473Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:58:29.826714142Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:58:29.826815491Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:58:29.827949972Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:58:29.828132362Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:29.828308141Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:29.828332345Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:58:29.828347386Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:58:29.828360049Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:58:29.828371782Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:58:34.84501407Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:58:34.87185243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:58:34.871939875Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:58:34.873896217Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:58:34.874390651Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:34.874814623Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:34.874848674Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:58:34.874863642Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:58:34.87487642Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:58:34.87488812Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:58:39.892266205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:58:39.922556408Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:58:39.922645263Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:58:39.924323158Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:58:39.924921445Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:39.925396021Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:39.925432045Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:58:39.925447456Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:58:39.925461997Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:58:39.925474471Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:58:44.944601136Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:58:44.973880395Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:58:44.973985395Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:58:44.975067341Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:58:44.97533484Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:44.975547826Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:44.975576303Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:58:44.975591261Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:58:44.975603672Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:58:44.975615035Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:58:49.993552677Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:58:50.024601068Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:58:50.024693177Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:58:50.025775776Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:58:50.025982803Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:50.026142914Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:50.026182927Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:58:50.026198801Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:58:50.026209952Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:58:50.026219837Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:58:55.046276554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:58:55.074639107Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:58:55.074747633Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:58:55.077120075Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:58:55.077400972Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:55.077602006Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:58:55.077630808Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:58:55.077645777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:58:55.077658883Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:58:55.077670818Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:59:00.099208396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:59:00.145469505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:59:00.145600272Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:59:00.146911466Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:59:00.147113901Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:00.147299965Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:00.1473414Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:59:00.147357809Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:59:00.147371382Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:59:00.147744147Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:59:05.168303687Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:59:05.19580897Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:59:05.195912849Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:59:05.197156761Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:59:05.197389175Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:05.19753716Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:05.197578755Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:59:05.197595421Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:59:05.197609268Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:59:05.198026185Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:59:10.21478518Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:59:10.245480098Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:59:10.245580335Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:59:10.247179282Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:59:10.247680883Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:10.247948201Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:10.247979028Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:59:10.247994796Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:59:10.248008524Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:59:10.248020029Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:59:15.269409726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:59:15.298842204Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:59:15.298933902Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:59:15.300062594Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:59:15.300287576Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:15.300553356Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:15.300598151Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:59:15.30061509Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:59:15.300678882Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:59:15.300691744Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:59:20.320331172Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:59:20.349351752Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:59:20.349467026Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:59:20.350670676Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:59:20.350917826Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:20.351123755Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:20.351175561Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:59:20.35119289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:59:20.351206059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:59:20.351621925Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:59:25.372289914Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:59:25.400779043Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:59:25.400894879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:59:25.403201944Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:59:25.40375985Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:25.403936532Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:25.40395967Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:59:25.403974512Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:59:25.403986927Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:59:25.40399861Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:59:30.418938888Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:59:30.447858022Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:59:30.447968382Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:59:30.449596323Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:59:30.449858131Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:30.450067847Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:30.450099418Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:59:30.450128635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:59:30.450139879Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:59:30.450148976Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:59:35.468171141Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:59:35.497496281Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:59:35.497585924Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:59:35.498673774Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:59:35.498890433Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:35.499104184Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:35.499147869Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:59:35.499162532Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:59:35.499174822Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:59:35.499184591Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:59:40.516271951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:59:40.543723386Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:59:40.543836519Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:59:40.546011355Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:59:40.546202582Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:40.546407139Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:40.546465439Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:59:40.54648164Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:59:40.546544256Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:59:40.546556729Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:59:45.56629313Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:59:45.594458845Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:59:45.59457453Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:59:45.595697403Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:59:45.595952717Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:45.596162797Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:45.59619373Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:59:45.596209287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:59:45.5962227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:59:45.59624408Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:59:50.613278437Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:59:50.642868204Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:59:50.642953348Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:59:50.644720029Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:59:50.64520836Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:50.645688642Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:50.645910588Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:59:50.645931892Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:59:50.645945954Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:59:50.645957818Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T04:59:55.662298496Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T04:59:55.693271702Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T04:59:55.693358193Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T04:59:55.695064369Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T04:59:55.695578544Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:55.695934258Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T04:59:55.695962643Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T04:59:55.695977448Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T04:59:55.696024077Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T04:59:55.696036237Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:00:00.729825705Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:00:00.80319646Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:00:00.803403689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:00:00.804802731Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:00:00.805114811Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:00.805893745Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:00.805926133Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:00:00.805940525Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:00:00.80598047Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:00:00.805991118Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:00:05.835661902Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:00:05.866088542Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:00:05.866205994Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:00:05.868023554Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:00:05.868250373Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:05.868561532Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:05.868592673Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:00:05.868606859Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:00:05.868651505Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:00:05.868663193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:00:10.88740966Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:00:10.915859076Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:00:10.915977623Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:00:10.917685436Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:00:10.917860198Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:10.917998036Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:10.918021467Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:00:10.918035922Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:00:10.918058829Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:00:10.918070408Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:00:15.934227885Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:00:15.96205402Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:00:15.962163704Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:00:15.963881679Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:00:15.96462344Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:15.965133903Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:15.965428537Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:00:15.96558575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:00:15.965602934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:00:15.965614798Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:00:20.981035505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:00:21.019927673Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:00:21.020043033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:00:21.021395739Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:00:21.021614203Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:21.021787131Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:21.021812104Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:00:21.021845601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:00:21.021861571Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:00:21.021874138Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:00:26.035700433Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:00:26.066084591Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:00:26.066174726Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:00:26.067197538Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:00:26.067455999Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:26.067660547Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:26.067699601Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:00:26.067713674Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:00:26.067723502Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:00:26.067732176Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:00:31.085533067Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:00:31.115473264Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:00:31.115562515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:00:31.116788526Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:00:31.116993661Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:31.117219128Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:31.117275371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:00:31.117291717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:00:31.117303418Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:00:36.134474594Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:00:36.163635845Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:00:36.163746935Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:00:36.165554007Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:00:36.166136149Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:36.166626326Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:36.16683858Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:00:36.166920332Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:00:36.166989744Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:00:36.167002189Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:00:41.185536939Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:00:41.216837048Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:00:41.216946881Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:00:41.218916823Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:00:41.21912562Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:41.219325525Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:41.219359264Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:00:41.219374474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:00:41.219388872Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:00:41.219400846Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:00:46.238685139Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:00:46.268862525Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:00:46.268990092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:00:46.27021676Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:00:46.270434074Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:46.270608441Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:46.270659151Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:00:46.270675572Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:00:46.271060162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:00:46.27107796Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:00:51.287191901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:00:51.318365309Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:00:51.3184551Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:00:51.320125515Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:00:51.320402988Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:51.32075831Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:51.320788876Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:00:51.320803591Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:00:51.320814606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:00:51.320823636Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:00:56.342032126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:00:56.371515054Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:00:56.371632304Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:00:56.372808976Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:00:56.372994264Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:56.373154726Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:00:56.373195198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:00:56.373211465Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:00:56.373225053Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:00:56.373603772Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:01:01.402676045Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:01:01.500134148Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:01:01.500249903Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:01:01.504448291Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:01:01.504745894Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:01.505030431Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:01.505057135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:01:01.505071791Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:01:01.505109631Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:01:01.505123431Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:01:06.527447106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:01:06.555057784Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:01:06.555166304Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:01:06.556223563Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:01:06.556567448Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:06.556773044Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:06.556808129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:01:06.556822349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:01:06.556850581Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:01:06.556862276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:01:11.571846609Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:01:11.600190741Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:01:11.600745577Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:01:11.602101675Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:01:11.602593587Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:11.602999481Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:11.603030387Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:01:11.603045617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:01:11.603058134Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:01:11.603069894Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:01:16.623271128Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:01:16.651215026Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:01:16.651327896Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:01:16.653144341Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:01:16.653719965Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:16.65390402Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:16.653929267Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:01:16.653943387Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:01:16.653956094Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:01:16.65396787Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:01:21.67326281Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:01:21.7021718Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:01:21.702282944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:01:21.703719431Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:01:21.704128324Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:21.704295212Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:21.704319664Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:01:21.704334789Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:01:21.704347879Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:01:21.704359386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:01:26.722772788Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:01:26.752042573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:01:26.752146566Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:01:26.753391038Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:01:26.753641687Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:26.753839485Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:26.75387119Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:01:26.753887121Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:01:26.753899498Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:01:26.753910644Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:01:31.773374771Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:01:31.799087179Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:01:31.799187266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:01:31.800205619Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:01:31.800473192Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:31.800642691Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:31.800670854Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:01:31.800685546Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:01:31.800698001Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:01:31.800709418Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:01:36.815890061Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:01:36.843451343Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:01:36.843549255Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:01:36.84608465Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:01:36.846624738Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:36.847002677Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:36.847040665Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:01:36.847056172Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:01:36.847067941Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:01:36.84707816Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:01:41.870294724Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:01:41.897343898Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:01:41.897454167Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:01:41.898639658Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:01:41.89891887Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:46.916142347Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:01:46.944556468Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:01:46.944664734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:01:46.946424389Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:01:46.94700949Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:46.947540187Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:46.947750097Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:01:46.94776844Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:01:46.947781466Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:01:46.947793422Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:01:51.967119432Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:01:51.997586109Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:01:51.997704507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:01:51.999979397Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:01:52.000693417Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:52.001208795Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:52.001485605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:01:52.001692536Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:01:52.001871711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:01:52.001889664Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:01:57.017368607Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:01:57.045506487Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:01:57.04562921Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:01:57.046713414Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:01:57.046967703Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:57.047156578Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:01:57.047193605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:01:57.047211541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:01:57.047225202Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:01:57.047591978Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:02:02.076995389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:02:02.205773738Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:02:02.205939415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:02:02.20732583Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:02:02.207923194Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:02.208167275Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:02.208192477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:02:02.208207441Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:02:02.208221886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:02:02.208247952Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:02:07.222394806Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:02:07.251914555Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:02:07.252024043Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:02:07.253274491Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:02:07.253462956Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:07.253602174Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:07.253631066Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:02:07.253646743Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:02:07.253703205Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:02:07.253714682Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:02:12.272553392Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:02:12.303362748Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:02:12.30345841Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:02:12.304687944Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:02:12.304863963Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:12.305004812Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:12.305033823Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:02:12.305049175Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:02:12.305062597Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:02:12.305074288Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:02:17.321304913Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:02:17.350116351Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:02:17.350224963Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:02:17.352106163Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:02:17.352339413Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:17.352710665Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:17.352742313Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:02:17.352757812Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:02:17.352771695Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:02:17.352783478Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:02:22.37599253Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:02:22.405825212Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:02:22.405929271Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:02:22.406977341Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:02:22.407194391Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:22.407416453Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:22.407445439Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:02:22.407460378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:02:22.407472073Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:02:22.407482001Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:02:27.421147047Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:02:27.452679736Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:02:27.452770483Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:02:27.455122844Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:02:27.455691429Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:27.45604046Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:27.456072145Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:02:27.45608743Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:02:27.456100502Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:02:27.456111988Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:02:32.47184894Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:02:32.499058834Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:02:32.499152629Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:02:32.500228289Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:02:37.516567827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:02:37.544593949Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:02:37.544728065Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:02:37.546002336Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:02:37.546443489Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:37.546591872Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:37.54662595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:02:37.546640812Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:02:37.546667115Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:02:37.546679043Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:02:42.571542792Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:02:42.599024443Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:02:42.599116151Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:02:42.600208486Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:02:42.600586934Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:42.600767914Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:42.600792312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:02:42.600806843Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:02:42.600820372Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:02:42.600832084Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:02:47.617014866Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:02:47.647135689Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:02:47.647226533Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:02:47.648761161Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:02:47.649210238Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:47.649411156Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:47.649445302Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:02:47.649460776Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:02:47.649474328Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:02:47.649484763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:02:52.665291817Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:02:52.694410393Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:02:52.694520845Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:02:52.695749552Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:02:52.695925874Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:52.696061381Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:52.696105038Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:02:52.696120304Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:02:52.696134454Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:02:52.696685175Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:02:57.710260672Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:02:57.740083049Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:02:57.740191999Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:02:57.74175203Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:02:57.742282342Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:57.74275959Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:02:57.742989689Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:02:57.743012439Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:02:57.743035694Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:02:57.743047451Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:03:02.762739444Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:03:02.793231731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:03:02.793369084Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:03:02.795180774Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:03:02.795667663Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:02.795845182Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:02.795914375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:03:02.795943899Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:03:02.795958332Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:03:02.795969599Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:03:07.81016095Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:03:07.841196656Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:03:07.841330946Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:03:07.842826468Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:03:07.843268498Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:07.843715664Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:07.843927639Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:03:07.843949876Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:03:07.843963121Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:03:07.843975086Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:03:12.863425382Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:03:12.890583556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:03:12.890679419Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:03:12.892125836Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:03:12.892801685Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:12.893143937Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:12.893188882Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:03:12.893205762Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:03:12.893219396Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:03:12.893479891Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:03:17.906898259Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:03:17.937764748Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:03:17.93786569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:03:17.940070904Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:03:17.940295812Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:17.940562388Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:17.940609611Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:03:17.940624764Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:03:17.940637921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:03:17.940877843Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:03:22.962880283Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:03:22.992968842Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:03:22.993085393Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:03:22.994263467Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:03:22.994522462Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:22.994742949Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:22.994783378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:03:22.994799758Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:03:22.994813483Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:03:28.013275847Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:03:28.042945107Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:03:28.043067869Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:03:28.044326577Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:03:28.044685702Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:28.044922483Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:28.044975215Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:03:28.044990722Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:03:28.045004164Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:03:28.045116433Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:03:33.063509017Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:03:33.093056129Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:03:33.093183955Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:03:33.094310141Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:03:33.094485614Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:33.094621948Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:33.094643834Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:03:33.094658602Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:03:33.094671718Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:03:33.094683388Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:03:38.111450307Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:03:38.139905756Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:03:38.140004028Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:03:38.141662356Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:03:38.142303712Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:38.14248859Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:38.142515503Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:03:38.142562311Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:03:38.142575653Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:03:38.142587557Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:03:43.158085871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:03:43.188263259Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:03:43.188418974Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:03:43.189733595Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:03:43.189934694Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:43.19008361Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:43.19012617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:03:43.190141285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:03:43.190155808Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:03:43.190530343Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:03:48.205525303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:03:48.234658329Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:03:48.234764577Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:03:48.236149435Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:03:48.236671856Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:48.237139011Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:48.237266181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:03:48.237291536Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:03:48.237305598Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:03:48.237317511Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:03:53.256333939Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:03:53.284799633Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:03:53.284890978Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:03:53.285996672Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:03:53.286185085Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:53.286377174Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:53.286416462Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:03:53.286432063Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:03:53.286490913Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:03:53.286502772Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:03:58.30266671Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:03:58.334085958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:03:58.334175152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:03:58.335285178Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:03:58.33548425Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:58.33562274Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:03:58.335663329Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:03:58.335678278Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:03:58.335691707Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:03:58.336025657Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:04:03.354289428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:04:03.383816164Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:04:03.383917041Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:04:03.386144808Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:04:03.386346723Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:03.386505655Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:03.3865358Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:04:03.386551009Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:04:03.386589809Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:04:03.386601456Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:04:08.40454407Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:04:08.432754305Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:04:08.432844701Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:04:08.433880256Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:04:08.43406374Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:08.434218781Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:08.434300119Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:04:08.434316002Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:04:08.434330178Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:04:08.434696566Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:04:13.453590192Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:04:13.484189132Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:04:13.484368077Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:04:13.485817913Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:04:13.486342567Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:13.486508538Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:13.486538315Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:04:13.486553446Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:04:13.486566478Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:04:13.486578049Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:04:18.500991405Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:04:18.532515451Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:04:18.532635094Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:04:18.535399741Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:04:18.535935753Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:18.536360887Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:18.536410821Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:04:18.536519706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:04:18.536534669Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:04:18.536546267Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:04:23.554284749Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:04:23.584603859Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:04:23.584717548Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:04:23.585945111Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:04:23.586354111Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:23.586753534Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:23.586786322Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:04:23.586801983Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:04:23.586815758Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:04:23.586828001Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:04:28.601342446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:04:28.632851092Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:04:28.632965331Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:04:28.635021343Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:04:28.63565298Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:28.636113848Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:28.636261451Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:04:28.636280551Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:04:28.636294829Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:04:28.636306371Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:04:33.654222195Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:04:33.683820761Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:04:33.683911243Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:04:33.685211084Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:04:33.685501781Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:33.685757718Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:33.685799595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:04:33.685815621Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:04:33.685891872Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:04:33.685902777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:04:38.707655457Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:04:38.739082535Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:04:38.739198473Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:04:38.741195753Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:04:38.741614309Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:38.742030263Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:38.742064308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:04:38.742079636Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:04:38.742116663Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:04:38.742128557Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:04:43.759269895Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:04:43.786349442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:04:43.786437586Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:04:43.788129486Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:04:43.788665528Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:43.789091265Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:43.789125038Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:04:43.789141106Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:04:43.789180238Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:04:43.789192398Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:04:48.806562674Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:04:48.838672713Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:04:48.838783209Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:04:48.840713838Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:04:48.841319098Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:48.841863228Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:48.842060453Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:04:48.842081336Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:04:48.842095968Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:04:48.842107821Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:04:53.857286596Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:04:53.88546972Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:04:53.885561358Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:04:53.886651955Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:04:53.886883865Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:53.887079903Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:53.88714879Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:04:53.887165664Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:04:53.887179207Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:04:58.905029764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:04:58.934422159Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:04:58.934514069Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:04:58.937157144Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:04:58.937403867Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:58.937597526Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:04:58.937636257Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:04:58.937651225Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:04:58.93771935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:04:58.937733113Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:05:03.957284861Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:05:03.986376552Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:05:03.986476727Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:05:03.988061882Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:05:03.988786057Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:03.988971891Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:03.988997332Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:05:03.989013554Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:05:03.989027345Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:05:03.989039516Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:05:09.003463076Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:05:09.034755936Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:05:09.03489747Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:05:09.036513199Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:05:09.036849937Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:09.037161376Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:14.057636575Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:05:14.087969303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:05:14.088062857Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:05:14.091020642Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:05:14.091305619Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:14.091545143Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:14.09158946Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:05:14.091606226Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:05:14.091618235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:05:14.091628605Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:05:19.105746882Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:05:19.135226974Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:05:19.135340271Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:05:19.136419157Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:05:19.136723552Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:19.136888034Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:19.136930536Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:05:19.136945648Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:05:19.136958971Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:05:19.137254563Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:05:24.157308869Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:05:24.185391761Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:05:24.185485263Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:05:24.186557005Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:05:24.186760151Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:24.186923289Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:24.186954182Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:05:24.186969931Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:05:24.186982603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:05:24.186991863Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:05:29.201983667Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:05:29.230317685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:05:29.230407424Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:05:29.231983361Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:05:29.232834955Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:29.233381656Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:29.233416234Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:05:29.233432911Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:05:29.23347081Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:05:29.233483176Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:05:34.253551409Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:05:34.282776377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:05:34.282883334Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:05:34.283931003Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:05:34.284116153Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:34.284290978Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:34.28432907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:05:34.284344342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:05:34.284397246Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:05:34.284409578Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:05:39.302309956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:05:39.333549166Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:05:39.3336444Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:05:39.334812277Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:05:39.335085785Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:39.335303716Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:39.335344682Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:05:39.335361709Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:05:39.335374734Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:05:39.335692047Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:05:44.354101921Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:05:44.384685921Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:05:44.384803647Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:05:44.385901035Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:05:44.386161608Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:44.386403079Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:44.38647274Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:05:44.386491382Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:05:44.386505421Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:05:44.386858031Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:05:49.404810684Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:05:49.435471264Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:05:49.435592321Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:05:49.43749989Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:05:49.438052108Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:49.438304992Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:49.438359083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:05:49.438375223Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:05:49.438389897Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:05:49.438401363Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:05:54.457275194Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:05:54.486617361Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:05:54.486703949Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:05:54.487726851Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:05:54.487927481Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:54.488129019Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:54.488177249Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:05:54.488193787Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:05:54.48820674Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:05:59.505353831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:05:59.534570665Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:05:59.534663185Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:05:59.535715694Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:05:59.535907508Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:59.536053482Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:05:59.536092999Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:05:59.536108249Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:05:59.536122117Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:05:59.536605514Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:06:04.556652131Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:06:04.587357115Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:06:04.587465397Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:06:04.590042709Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:06:04.590307284Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:04.590521944Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:04.590562595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:06:04.590577813Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:06:04.590632755Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:06:04.590645262Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:06:09.605711054Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:06:09.634193654Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:06:09.634396572Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:06:09.636160635Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:06:09.636770884Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:09.6373088Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:09.637421683Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:06:09.637441615Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:06:09.637483364Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:06:09.637495291Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:06:14.657932005Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:06:14.687461935Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:06:14.68757045Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:06:19.710311111Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:06:19.739325852Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:06:19.739430491Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:06:19.740638493Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:06:19.740901803Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:19.741096909Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:19.741138036Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:06:19.741155663Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:06:19.741168019Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:06:19.741550366Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:06:24.759559583Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:06:24.790717094Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:06:24.790809901Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:06:24.792046683Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:06:24.792367092Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:24.792775993Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:24.79280773Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:06:24.792822994Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:06:24.792844602Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:06:24.792856201Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:06:29.810300072Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:06:29.839972256Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:06:29.840061499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:06:29.841434259Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:06:29.841706514Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:29.841929071Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:29.841964431Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:06:29.842014581Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:06:29.842027698Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:06:29.842039403Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:06:34.86334295Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:06:34.891260142Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:06:34.891365919Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:06:34.893194443Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:06:34.893594185Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:34.894066509Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:34.894096929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:06:34.894111375Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:06:34.894125442Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:06:34.89413743Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:06:39.910836098Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:06:39.941036824Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:06:39.941127321Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:06:39.942275728Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:06:39.942458029Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:39.942596371Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:39.942626341Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:06:39.942640981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:06:39.942653333Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:06:39.94266467Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:06:44.958560885Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:06:44.988409684Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:06:44.988570644Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:06:44.989627239Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:06:44.989816672Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:44.989966575Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:44.989990964Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:06:44.990004751Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:06:44.990017508Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:06:44.99002924Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:06:50.008269069Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:06:50.037066084Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:06:50.037179572Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:06:50.038381562Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:06:50.038650283Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:50.038883509Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:50.038913059Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:06:50.038927226Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:06:50.038940127Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:06:50.038950319Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:06:55.055979392Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:06:55.086258408Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:06:55.086390256Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:06:55.087449005Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:06:55.087636762Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:55.087793142Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:06:55.087833174Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:06:55.087849388Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:06:55.087862217Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:06:55.088211545Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:07:00.120130167Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:07:00.162172575Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:07:00.162286282Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:07:00.16402975Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:07:00.164214811Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:00.164387344Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:00.16458556Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:07:00.164613246Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:07:00.164625861Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:07:00.164635466Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:07:05.181458922Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:07:05.21206491Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:07:05.212167854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:07:05.213334697Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:07:05.213565898Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:05.213744552Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:05.213786353Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:07:05.213801691Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:07:05.213870584Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:07:05.213882857Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:07:10.229475719Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:07:10.259489829Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:07:10.259580973Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:07:10.260763287Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:07:10.260951012Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:10.26110077Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:10.261122477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:07:10.261137269Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:07:10.261150876Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:07:10.261162654Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:07:15.280088031Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:07:15.311056058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:07:15.311148058Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:07:15.313486445Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:07:15.313929001Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:15.314305299Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:15.314338172Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:07:15.314354025Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:07:15.314391654Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:07:15.314404539Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:07:20.327033587Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:07:20.357047955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:07:20.357159762Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:07:20.359962248Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:07:20.360574072Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:20.360991899Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:20.361027045Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:07:20.361042889Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:07:20.361056342Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:07:20.361068311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:07:25.380623565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:07:25.409637657Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:07:25.409766989Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:07:25.410923339Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:07:25.411112883Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:25.411297402Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:25.411336639Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:07:25.411352057Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:07:25.411364994Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:07:25.411767018Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:07:30.431272112Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:07:30.460289141Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:07:30.460896413Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:07:30.462307872Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:07:30.462758088Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:30.463121048Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:30.463153369Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:07:30.463168529Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:07:30.463182502Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:07:30.463193927Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:07:35.478283842Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:07:35.506659642Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:07:35.506775153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:07:35.508343967Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:07:35.508911261Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:35.509059366Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:35.509082046Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:07:35.509097023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:07:35.509109552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:07:35.509121296Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:07:40.527271127Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:07:40.556020308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:07:40.556132849Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:07:40.557385738Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:07:40.557613121Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:40.557794648Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:40.557822794Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:07:40.557837323Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:07:40.55785022Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:07:40.557862039Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:07:45.573900956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:07:45.602157333Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:07:45.602278776Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:07:45.603486332Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:07:45.603770584Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:45.604009746Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:45.604040081Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:07:45.604055021Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:07:45.604068647Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:07:45.604080346Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:07:50.620820902Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:07:50.652517918Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:07:50.652654604Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:07:50.653804671Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:07:50.65404305Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:50.654229403Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:50.654271232Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:07:50.654286429Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:07:50.654299273Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:07:50.654310967Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:07:55.674702389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:07:55.706791418Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:07:55.706881109Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:07:55.707922875Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:07:55.708127493Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:55.708319844Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:07:55.70835583Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:07:55.708572832Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:07:55.708593105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:07:55.708605404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:08:00.727695155Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:08:00.7571555Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:08:00.757295372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:08:00.758372084Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:08:00.758553034Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:00.758720281Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:00.758768673Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:08:00.758784304Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:08:00.758798204Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:08:00.758809907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:08:05.780289856Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:08:05.809444211Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:08:05.809552182Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:08:05.810867836Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:08:05.811170723Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:05.811413885Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:05.811447239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:08:05.811463065Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:08:05.811499651Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:08:05.811510703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:08:10.831275678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:08:10.858883166Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:08:10.858980674Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:08:10.860913964Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:08:10.861466009Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:10.861921207Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:15.880308951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:08:15.909592639Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:08:15.909686341Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:08:15.910803737Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:08:15.911042782Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:15.911220398Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:15.911268608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:08:15.911284022Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:08:15.911295802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:08:15.911306831Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:08:20.931280814Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:08:20.96113473Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:08:20.961260511Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:08:20.962740098Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:08:20.963272407Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:20.963642452Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:20.963679264Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:08:20.963694244Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:08:20.963705252Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:08:20.963715446Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:08:25.981014374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:08:26.011889507Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:08:26.01198116Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:08:26.014253709Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:08:26.014811391Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:26.014984772Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:26.015010122Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:08:26.015026192Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:08:26.015039836Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:08:26.015051737Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:08:31.031289265Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:08:31.060564947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:08:31.060680116Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:08:31.061789224Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:08:31.061977058Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:31.062132371Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:31.06215436Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:08:31.062169259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:08:31.062182299Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:08:31.062193777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:08:36.085228906Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:08:36.116699302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:08:36.116796192Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:08:36.118108084Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:08:36.11839641Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:36.118651382Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:36.118699537Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:08:36.118716433Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:08:36.118727775Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:08:36.118737852Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:08:41.134378578Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:08:41.164148205Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:08:41.164254086Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:08:41.165872304Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:08:41.166288752Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:41.166446966Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:41.166469681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:08:41.166484653Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:08:41.166498116Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:08:41.166509636Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:08:46.184495614Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:08:46.214450805Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:08:46.214561366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:08:46.215663391Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:08:46.215893823Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:46.216100077Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:46.21614166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:08:46.216158577Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:08:46.21621114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:08:46.21622264Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:08:51.237405297Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:08:51.26608965Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:08:51.266191302Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:08:51.26724539Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:08:51.26745357Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:51.267616073Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:51.267657352Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:08:51.26767353Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:08:51.267687108Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:08:51.268048466Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:08:56.284766443Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:08:56.316223393Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:08:56.316345052Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:08:56.317745924Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:08:56.318044342Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:56.318328181Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:08:56.318390636Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:08:56.318478704Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:08:56.318494717Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:08:56.318505207Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:09:01.3490506Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:09:01.399727671Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:09:01.399925301Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:09:01.401981369Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:09:01.402553221Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:01.403732028Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:01.403998014Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:09:01.40449134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:09:01.404537547Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:09:01.404613319Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:09:06.418781037Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:09:06.450130508Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:09:06.450216286Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:09:06.451479051Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:09:06.451729026Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:06.451938409Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:06.451968463Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:09:06.451999432Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:09:06.452030287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:09:06.452042702Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:09:11.467274747Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:09:11.496805033Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:09:11.496923956Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:09:11.49907303Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:09:11.499563012Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:11.499710731Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:11.499760707Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:09:11.499776127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:09:11.500139215Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:09:11.500154304Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:09:16.515854955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:09:16.547847539Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:09:16.547944783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:09:16.549880481Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:09:16.550052311Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:16.55020528Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:16.550229015Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:09:16.550259555Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:09:16.550273828Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:09:16.550286278Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:09:21.569545205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:09:21.599049732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:09:21.599139946Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:09:21.60026298Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:09:21.600646141Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:21.600842179Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:21.600883829Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:09:21.600899794Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:09:21.600962949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:09:21.600975466Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:09:26.621549674Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:09:26.651368448Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:09:26.651452847Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:09:26.65326374Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:09:26.653858845Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:26.654043691Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:26.654067061Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:09:26.654082413Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:09:26.654096212Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:09:26.654107988Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:09:31.674341882Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:09:31.713773875Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:09:31.713865178Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:09:31.715501297Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:09:31.716030525Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:31.71617761Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:31.716207451Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:09:31.716222306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:09:31.716246472Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:09:31.716258536Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:09:36.733498112Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:09:36.764670053Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:09:36.764780976Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:09:36.765854842Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:09:36.766119192Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:36.766367511Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:36.766397953Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:09:36.7664118Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:09:36.766424035Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:09:36.766433849Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:09:41.786966909Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:09:41.815477243Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:09:41.815576085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:09:41.816718029Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:09:41.81696783Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:41.817184534Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:41.817211166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:09:41.817224427Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:09:41.817246186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:09:41.817258125Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:09:46.837787048Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:09:46.868986988Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:09:46.869119544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:09:46.870562796Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:09:46.871019879Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:46.871491675Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:46.871716971Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:09:46.871918735Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:09:46.871987977Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:09:46.872000396Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:09:51.891151587Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:09:51.923130076Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:09:51.923216571Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:09:51.92501035Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:09:51.925535359Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:51.925983617Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:51.92602147Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:09:51.926037804Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:09:51.926051841Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:09:51.926063634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:09:56.948283344Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:09:56.977327005Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:09:56.977443521Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:09:56.978587088Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:09:56.978800813Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:56.978959586Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:09:56.978989799Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:09:56.979005943Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:09:56.979020786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:09:56.979033114Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:10:02.017433007Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:10:02.117904864Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:10:02.118037392Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:10:02.11961107Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:10:02.119778391Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:02.119915059Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:02.119931408Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:10:02.119946183Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:10:02.119959909Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:10:02.119971257Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:10:07.153775352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:10:07.184842206Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:10:07.184936349Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:10:07.186088496Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:10:07.186356664Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:07.186564908Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:07.186604401Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:10:07.186619462Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:10:07.186630621Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:10:07.186640359Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:10:12.204304044Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:10:12.233819879Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:10:12.233911414Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:10:12.235104084Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:10:12.235400717Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:12.235647089Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:12.23569089Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:10:12.235706855Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:10:12.235743961Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:10:12.235753975Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:10:17.251542279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:10:17.282676597Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:10:17.282774709Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:10:17.285352085Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:10:17.285627102Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:17.28581621Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:17.285847942Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:10:17.285877958Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:10:17.285915497Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:10:17.285926842Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:10:22.30600659Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:10:22.336788191Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:10:22.336904434Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:10:22.338095764Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:10:22.338315179Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:22.338473291Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:22.338513312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:10:22.338529142Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:10:22.33854201Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:10:22.338908865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:10:27.352291926Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:10:27.382451417Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:10:27.382562318Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:10:27.385299683Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:10:27.385792144Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:27.385951798Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:27.385981932Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:10:27.385997466Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:10:27.386011435Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:10:27.38602344Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:10:32.404614641Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:10:32.435106445Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:10:32.435224908Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:10:32.436830478Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:10:32.437287023Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:32.437507645Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:32.437539337Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:10:32.437553764Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:10:32.437566717Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:10:32.437576968Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:10:37.452285369Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:10:37.480741528Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:10:37.480864273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:10:37.483046774Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:10:37.483583675Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:37.483957142Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:37.483995889Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:10:37.484012247Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:10:37.484025509Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:10:37.484037089Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:10:42.503043087Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:10:42.534363793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:10:42.534486671Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:10:42.535588028Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:10:42.535787678Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:42.535921382Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:42.535945075Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:10:42.535960339Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:10:42.535973449Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:10:42.535984604Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:10:47.552680226Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:10:47.583904495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:10:47.584044843Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:10:47.586090648Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:10:47.586371876Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:47.58662971Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:47.58666052Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:10:47.586685289Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:10:47.586698936Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:10:47.586710586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:10:52.601286483Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:10:52.630703213Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:10:52.630824923Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:10:52.632499298Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:10:52.632707207Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:52.632852413Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:52.6328848Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:10:52.632898935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:10:52.632910484Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:10:52.632920799Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:10:57.650280344Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:10:57.678589638Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:10:57.678670869Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:10:57.679827057Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:10:57.680087218Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:57.680276662Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:10:57.680331084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:10:57.680345737Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:10:57.680357125Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:10:57.680367071Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:11:02.699105358Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:11:02.730132007Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:11:07.752363272Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:11:07.782966817Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:11:07.783067184Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:11:07.784107147Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:11:07.78432622Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:07.784573985Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:07.784599534Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:11:07.78461397Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:11:07.784627258Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:11:07.784639094Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:11:12.804923948Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:11:12.837842632Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:11:12.837942755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:11:12.839514838Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:11:12.839817558Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:12.839999403Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:12.840030879Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:11:12.840060706Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:11:12.840072511Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:11:12.840082286Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:11:17.854687068Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:11:17.885203154Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:11:17.885331242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:11:17.886450369Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:11:17.88664601Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:17.886803236Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:17.886844168Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:11:17.886858614Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:11:17.886871298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:11:17.88720849Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:11:22.907313767Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:11:22.935896268Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:11:22.936011224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:11:22.938532531Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:11:22.938736948Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:22.939256344Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:22.939291962Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:11:22.939306657Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:11:22.939320843Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:11:22.939332618Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:11:27.955374918Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:11:27.98471909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:11:27.984831649Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:11:27.986709478Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:11:27.989293431Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:27.989518504Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:27.989564929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:11:27.989580559Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:11:27.989641405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:11:27.98965305Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:11:33.009624882Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:11:33.039824454Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:11:33.039913069Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:11:33.041472557Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:11:33.041985325Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:33.042435371Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:33.042664416Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:11:33.042847083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:11:33.042867106Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:11:33.042879327Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:11:38.057689606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:11:38.086180765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:11:38.086309901Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:11:43.110010615Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:11:43.138169246Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:11:43.138293783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:11:43.139300788Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:11:43.139489488Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:43.139633734Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:43.139656173Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:11:43.139671526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:11:43.139684724Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:11:43.139695976Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:11:48.158546153Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:11:48.187146177Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:11:48.187276946Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:11:48.188308296Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:11:48.188663808Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:48.188835226Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:48.188876049Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:11:48.188891527Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:11:48.188904579Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:11:48.189268952Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:11:53.203417082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:11:53.233183707Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:11:53.23329144Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:11:53.234397124Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:11:53.234641445Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:53.234816095Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:53.23486159Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:11:53.234877787Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:11:53.235212186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:11:53.235225283Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:11:58.250727009Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:11:58.281570608Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:11:58.281692804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:11:58.283424188Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:11:58.283875025Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:58.284346286Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:11:58.284715893Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:11:58.284739753Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:11:58.284754383Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:11:58.284766371Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:12:03.305340277Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:12:03.334378586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:12:03.334505918Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:12:03.335612652Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:12:03.335825851Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:03.33597644Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:03.336010146Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:12:03.336025196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:12:03.336676926Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:12:03.336692149Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:12:08.352667789Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:12:08.38157322Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:12:08.382149401Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:12:08.38341664Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:12:08.383880847Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:08.384294386Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:08.384331106Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:12:08.384347626Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:12:08.384460948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:12:08.384473306Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:12:13.40329873Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:12:13.431122394Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:12:13.431255382Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:12:13.432504709Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:12:13.432721854Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:13.432864203Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:13.432887631Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:12:13.432902612Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:12:13.432917267Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:12:13.432929424Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:12:18.448305666Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:12:18.47438354Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:12:18.47448715Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:12:18.475492709Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:12:18.475661842Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:18.475795332Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:18.47581818Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:12:18.475832853Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:12:18.475846676Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:12:18.475858075Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:12:23.495488261Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:12:23.52552948Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:12:23.525652466Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:12:23.529146382Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:12:23.529393507Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:23.529622182Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:23.529653058Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:12:23.529668489Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:12:23.529693982Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:12:23.52970476Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:12:28.545511811Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:12:28.575920375Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:12:28.576026596Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:12:28.577579918Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:12:28.5780139Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:28.57818374Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:28.578216097Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:12:28.578231086Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:12:28.578257652Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:12:28.578268495Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:12:33.602361025Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:12:33.629252158Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:12:33.629345837Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:12:33.630837658Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:12:33.631109767Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:33.631386123Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:33.631447505Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:12:33.631463276Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:12:33.631477512Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:12:33.631945865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:12:38.649302174Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:12:38.679316898Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:12:38.679432456Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:12:38.680658425Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:12:38.680938205Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:38.681120428Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:38.681149515Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:12:38.681163654Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:12:38.681174793Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:12:38.681185335Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:12:43.701356071Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:12:43.732009191Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:12:43.732130987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:12:43.733405864Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:12:43.733636628Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:43.733850016Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:43.733877852Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:12:43.73389254Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:12:43.733906946Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:12:43.733918551Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:12:48.749103122Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:12:48.780111587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:12:48.780219076Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:12:48.781913879Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:12:48.782388709Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:48.782806624Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:48.782841479Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:12:48.782856713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:12:48.782870069Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:12:48.782881596Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:12:53.802324045Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:12:53.833989066Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:12:53.834099935Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:12:53.835196607Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:12:53.835450185Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:53.835605538Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:53.835632432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:12:53.835647623Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:12:53.8356614Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:12:53.835673522Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:12:58.853229555Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:12:58.880261874Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:12:58.880376786Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:12:58.881682658Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:12:58.881921849Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:58.882111639Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:12:58.882161001Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:12:58.882176633Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:12:58.882189799Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:12:58.882201187Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:13:03.901285655Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:13:03.930970112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:13:03.931076278Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:13:03.932271305Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:13:03.93267254Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:03.932876095Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:03.932914102Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:13:03.932969127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:13:03.932982135Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:13:03.932993874Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:13:08.948266031Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:13:08.977083013Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:13:08.977206744Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:13:08.978308116Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:13:08.978536794Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:08.978704171Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:08.9787336Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:13:08.978747987Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:13:08.97876234Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:13:08.978774091Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:13:13.998887733Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:13:14.029951075Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:13:14.03003794Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:13:14.031101226Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:13:14.031318222Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:14.031480295Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:14.031509671Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:13:14.031524728Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:13:14.031538283Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:13:14.031550051Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:13:19.046973595Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:13:19.076899361Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:13:19.076994626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:13:19.078603288Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:13:19.078794935Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:19.07893648Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:19.078977449Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:13:19.078992874Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:13:19.079006816Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:13:19.079417085Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:13:24.097728402Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:13:24.126476559Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:13:24.12657155Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:13:24.129057797Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:13:24.12936004Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:24.12957468Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:24.129618256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:13:24.129635318Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:13:24.12964895Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:13:24.1300153Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:13:29.148394937Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:13:29.177429162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:13:29.177519276Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:13:29.178610059Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:13:29.17885221Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:29.17903085Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:29.179061533Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:13:29.179076667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:13:29.17908995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:13:29.179100544Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:13:34.197052891Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:13:34.229502226Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:13:34.229592077Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:13:34.230721323Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:13:34.230965095Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:34.231166919Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:34.231204411Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:13:34.231219531Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:13:34.231231297Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:13:34.231715303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:13:39.250568457Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:13:39.280162437Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:13:39.280287239Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:13:39.28239179Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:13:39.282836809Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:39.283252462Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:39.283369927Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:13:39.283394668Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:13:39.283408697Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:13:39.28341928Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:13:44.304947961Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:13:44.336133514Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:13:44.33625449Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:13:44.337571722Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:13:44.337816318Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:44.338013135Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:44.338039005Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:13:44.3380544Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:13:44.338068919Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:13:44.33808129Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:13:49.354292077Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:13:49.383518402Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:13:49.383630927Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:13:49.385016539Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:13:49.385279798Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:49.385496469Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:49.385543765Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:13:49.385558913Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:13:49.385571725Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:13:49.385581398Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:13:54.401491462Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:13:54.430637765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:13:54.430745786Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:13:54.432541272Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:13:54.433120921Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:54.433711711Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:54.433818494Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:13:54.433861335Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:13:54.433875986Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:13:54.433887985Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:13:59.452217675Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:13:59.482918315Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:13:59.483060009Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:13:59.484124017Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:13:59.484331914Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:59.484551672Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:13:59.484595061Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:13:59.484609566Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:13:59.484623713Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:13:59.48504942Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:14:04.504168377Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:14:04.53395108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:14:04.534073068Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:14:04.535729088Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:14:04.536214991Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:04.536886383Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:04.537008624Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:14:04.537045438Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:14:04.537059647Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:14:04.537072175Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:14:04.53740835Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T05:14:09.555120355Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:14:09.586966161Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:14:09.587067872Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:14:09.589306678Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:14:09.589720145Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:09.59012195Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:09.590156958Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:14:09.59017309Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:14:09.590218838Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:14:09.590230571Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:14:14.607901827Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:14:14.638183787Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:14:14.638307518Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:14:14.639608014Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:14:14.639792528Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:14.639949663Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:14.639997491Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:14:14.64001316Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:14:14.640073092Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:14:14.640084898Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:14:19.655224411Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:14:19.685656172Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:14:19.685759854Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:14:19.687129554Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:14:19.687375097Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:19.687526946Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:19.687567727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:14:19.687582515Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:14:19.687595676Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:14:19.68799266Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:14:24.707296765Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:14:24.737369532Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:14:24.737478068Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:14:24.738672028Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:14:24.738880024Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:24.739024263Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:24.73905292Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:14:24.739067141Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:14:24.739111879Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:14:24.739123962Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:14:29.754287698Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:14:29.783710049Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:14:29.783801857Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:14:29.785264882Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:14:29.785518023Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:29.785717181Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:29.785778659Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:14:29.785797224Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:14:29.785836097Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:14:29.785847095Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:14:34.809686341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:14:34.83862052Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:14:34.838731734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:14:39.857288374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:14:39.88751416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:14:39.887608765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:14:39.891082864Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:14:39.891550931Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:39.891720472Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:39.891750843Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:14:39.891765256Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:14:39.891779024Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:14:39.891791144Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:14:44.909646153Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:14:44.938353862Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:14:44.938453762Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:14:44.939769396Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:14:44.939993175Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:44.940191298Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:44.940220651Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:14:44.940246093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:14:44.94026059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:14:44.940270596Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:14:49.958017225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:14:49.987861185Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:14:49.987951419Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:14:49.989092391Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:14:49.989311819Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:49.989473093Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:49.989503107Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:14:49.989518369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:14:49.989531649Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:14:49.989543425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:14:55.00780741Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:14:55.035798315Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:14:55.035913176Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:14:55.037575383Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:14:55.038114254Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:55.038605741Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:14:55.038641193Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:14:55.03865722Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:14:55.038671341Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:14:55.03868353Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:15:00.05754277Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:15:00.094663743Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:15:00.094817558Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:15:00.097297404Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:15:00.097878964Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:00.098410035Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:00.098450981Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:15:00.098466915Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:15:00.098480928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:15:00.098493161Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:15:05.122335047Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:15:05.151958179Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:15:05.15205501Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:15:05.153532271Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:15:05.153800293Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:05.154028439Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:05.15405909Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:15:05.154075132Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:15:05.154090487Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:15:05.154102205Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:15:10.174601678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:15:10.203898303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:15:10.204036348Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:15:10.206422583Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:15:10.206945584Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:10.207296364Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:10.207335226Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:15:10.207351109Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:15:10.207365079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:15:10.207374946Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:15:15.224900604Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:15:15.255680546Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:15:15.255809314Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:15:15.258187649Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:15:15.258663308Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:15.258869634Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:15.258911913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:15:15.258927966Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:15:15.258941352Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:15:15.258953185Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:15:20.278275348Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:15:20.307688658Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:15:20.307829634Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:15:20.310127217Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:15:20.310402135Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:20.310687409Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:20.310731502Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:15:20.310766745Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:15:20.310791011Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:15:20.310802933Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:15:25.326866719Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:15:25.35431472Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:15:25.354420024Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:15:25.35552998Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:15:25.355764401Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:25.355964704Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:25.35601067Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:15:25.356026265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:15:25.35603847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:15:25.356697328Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:15:30.376285796Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:15:30.406949245Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:15:30.407057106Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:15:30.409438612Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:15:30.409986153Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:35.426914063Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:15:35.456365166Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:15:35.456557445Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:15:35.459127406Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:15:35.45936346Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:35.459569627Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:35.459604916Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:15:35.459619216Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:15:35.45965852Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:15:35.459670345Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:15:40.475515703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:15:40.505100437Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:15:40.505194678Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:15:40.506220028Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:15:40.506474433Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:40.506646753Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:40.506685892Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:15:40.506701082Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:15:40.506713646Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:15:40.507088642Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:15:45.524776741Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:15:45.553446107Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:15:45.55356586Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:15:45.555112914Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:15:45.555731518Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:45.556267011Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:45.556302332Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:15:45.55656936Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:15:45.556590754Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:15:45.556602845Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:15:50.571695313Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:15:50.599085021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:15:50.59917439Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:15:50.600160415Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:15:50.600391311Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:50.600729655Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:50.600759126Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:15:50.600773916Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:15:50.600786568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:15:50.600798398Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:15:55.614762726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:15:55.644624549Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:15:55.644714446Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:15:55.646059534Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:15:55.646310491Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:55.64648297Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:15:55.64652397Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:15:55.646539042Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:15:55.646552279Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:15:55.646968201Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:16:00.661385089Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:16:00.69086839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:16:00.690980878Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:16:00.69304145Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:16:00.693279258Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:00.693485627Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:00.693532195Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:16:00.693548529Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:16:00.693561172Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:16:00.693573138Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:16:05.713264436Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:16:05.740432493Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:16:05.740674003Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:16:05.743165507Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:16:05.74344374Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:05.743632924Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:05.743664367Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:16:05.743679664Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:16:05.743694191Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:16:05.743705836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:16:10.7662907Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:16:10.794037042Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:16:10.794158536Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:16:10.795180734Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:16:10.795368544Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:10.795520379Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:10.795543711Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:16:10.795558855Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:16:10.795572072Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:16:10.795583485Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:16:15.811285097Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:16:15.842421423Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:16:15.842538569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:16:15.844295891Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:16:15.844795955Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:15.845163897Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:15.845201015Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:16:15.845216061Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:16:15.845228659Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:16:15.845249919Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:16:20.861281142Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:16:20.890107288Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:16:20.890229848Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:16:20.891472239Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:16:20.89169967Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:20.891878802Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:20.891911457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:16:20.891927083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:16:20.891940984Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:16:20.891953064Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:16:25.907518019Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:16:25.937787631Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:16:25.93788695Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:16:25.939492875Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:16:25.939926737Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:25.940127874Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:25.940156592Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:16:25.940172344Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:16:25.940184297Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:16:25.940195959Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:16:30.958311217Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:16:30.988579401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:16:30.988671232Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:16:30.991031701Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:16:30.99166767Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:30.992014991Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:30.992051458Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:16:30.992066879Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:16:30.992080193Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:16:30.992092249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:16:36.015353985Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:16:36.04734376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:16:36.047484605Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:16:36.048636665Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:16:36.048808735Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:36.048947388Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:36.048971333Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:16:36.049011787Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:16:36.049025011Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:16:36.049036639Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:16:41.065287348Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:16:41.094050865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:16:41.09417055Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:16:41.096080251Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:16:41.096321472Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:41.096572508Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:41.096615208Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:16:41.096630722Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:16:41.096644032Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:16:41.09700001Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:16:46.115941537Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:16:46.14253303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:16:46.142646715Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:16:46.14367579Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:16:46.14389579Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:46.144035666Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:46.144058544Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:16:46.144072798Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:16:46.144101801Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:16:46.144113786Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:16:51.166301116Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:16:51.195527712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:16:51.195657592Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:16:51.197407296Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:16:51.197998459Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:51.198497928Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:51.198717198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:16:51.198739532Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:16:51.198762302Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:16:51.1987745Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:16:56.216742514Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:16:56.245457944Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:16:56.245579138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:16:56.247023372Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:16:56.247572075Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:56.247958493Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:16:56.248073535Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:16:56.248096575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:16:56.248110448Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:16:56.248122313Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:17:01.268314018Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:17:01.297932359Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:17:01.29804546Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:17:01.299259849Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:17:01.299478702Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:01.299639248Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:01.2996782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:17:01.299755698Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:17:01.299769344Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:17:01.29978135Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:17:06.3147658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:17:06.345147339Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:17:06.345251124Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:17:06.346462714Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:17:06.346745648Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:06.346979618Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:06.347039316Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:17:06.347060049Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:17:06.347073637Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:17:06.347102556Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:17:11.367313243Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:17:11.395207763Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:17:11.395337049Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:17:11.396555713Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:17:11.39678844Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:11.396955059Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:11.396985071Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:17:11.396999639Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:17:11.397010855Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:17:11.397020263Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:17:16.415619076Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:17:16.445163618Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:17:16.445285523Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:17:16.446913322Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:17:16.447107203Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:16.447301401Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:16.447330435Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:17:16.447344215Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:17:16.447373325Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:17:16.44738533Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:17:21.467872101Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:17:21.494988467Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:17:21.495088051Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:17:21.497020685Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:17:21.497265928Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:21.497487618Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:21.497521434Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:17:21.49753704Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:17:21.497552321Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:17:21.497563923Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:17:26.516754442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:17:26.543245927Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:17:26.543337512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:17:26.546374825Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:17:26.546631651Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:26.546876901Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:26.546929387Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:17:26.546945317Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:17:26.546958547Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:17:26.546969888Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:17:31.563344101Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:17:31.594414486Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:17:31.594521335Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:17:31.595731604Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:17:31.595930053Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:31.596157189Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:31.596180026Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:17:31.59619399Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:17:31.596254903Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:17:31.596267309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:17:36.616257656Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:17:36.64384025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:17:36.643951446Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:17:36.645687614Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:17:36.646192766Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:36.646633141Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:36.646667885Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:17:36.646683657Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:17:36.646696299Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:17:36.646708443Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:17:41.662270751Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:17:41.691471981Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:17:41.691577101Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:17:41.692765264Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:17:41.692988076Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:41.693193673Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:41.693260428Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:17:41.693278351Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:17:41.69329168Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:17:41.693649378Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:17:46.709232856Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:17:46.738565734Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:17:46.738652379Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:17:46.742174067Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:17:46.742536618Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:46.742796733Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:51.764698709Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:17:51.795593362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:17:51.795709376Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:17:51.797698217Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:17:51.798223529Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:51.79872934Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:51.79885056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:17:51.798875553Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:17:51.798888603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:17:51.798901122Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:17:56.814316923Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:17:56.846020818Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:17:56.846110688Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:17:56.847867757Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:17:56.848039534Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:56.848177013Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:17:56.848209484Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:17:56.848223789Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:17:56.848253757Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:17:56.848263533Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:18:01.884952593Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:18:01.943077377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:18:01.943212016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:18:01.944544825Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:18:01.944760866Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:01.945251121Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:01.94527825Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:18:01.945292172Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:18:01.945302578Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:18:01.945311812Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:18:06.966365846Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:18:06.995520083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:18:06.995635614Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:18:06.998991834Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:18:06.999231935Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:06.999416277Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:06.999457657Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:18:06.999473445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:18:06.999486841Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:18:06.999898279Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:18:12.017293053Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:18:12.047319894Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:18:12.047414944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:18:12.049328152Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:18:12.049592709Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:12.049826065Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:12.049870561Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:18:12.049885969Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:18:12.049899379Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:18:12.050348833Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:18:17.070841839Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:18:17.104413173Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:18:17.104659092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:18:17.106223475Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:18:17.10662363Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:17.106772897Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:17.106801319Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:18:17.106815684Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:18:17.106827218Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:18:17.106837493Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:18:22.130521542Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:18:22.161828416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:18:22.161951357Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:18:22.165220468Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:18:22.16578264Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:22.166218486Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:22.166399153Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:18:22.16641822Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:18:22.166433286Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:18:22.166444714Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:18:27.181223386Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:18:27.20995477Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:18:27.210065054Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:18:27.211248155Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:18:27.211469331Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:27.211651781Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:27.211691513Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:18:27.211707463Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:18:27.211721122Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:18:27.21219097Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:18:32.228313974Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:18:32.258679094Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:18:32.258777814Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:18:32.25992727Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:18:32.260206184Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:32.260588332Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:32.260620841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:18:32.260636357Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:18:32.260650503Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:18:32.260662603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:18:37.274369829Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:18:37.304178616Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:18:37.304306001Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:18:37.305875628Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:18:37.30643455Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:37.306654424Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:37.306711112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:18:37.306727885Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:18:37.306740558Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:18:37.306750771Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:18:42.324905454Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:18:42.352371283Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:18:42.352611156Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:18:42.35378029Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:18:42.353982144Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:42.354136628Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:42.354177457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:18:42.354193321Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:18:42.354206775Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:18:47.371295122Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:18:47.399032587Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:18:47.399140765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:18:47.400198791Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:18:47.400422152Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:47.400675216Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:47.400719591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:18:47.400734789Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:18:47.400748855Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:18:47.401217571Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:18:52.415963371Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:18:52.446448863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:18:52.446559168Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:18:52.448265165Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:18:52.448790166Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:52.449170198Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:52.449205868Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:18:52.449221505Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:18:52.449250718Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:18:52.449263189Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:18:57.464216787Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:18:57.491049914Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:18:57.491156173Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:18:57.492167734Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:18:57.492371646Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:57.492680013Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:18:57.492721707Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:18:57.492738224Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:18:57.492751374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:18:57.493088777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:19:02.511306612Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:19:02.541405406Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:19:02.541519851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:19:02.543877674Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:19:02.54441215Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:02.545061068Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:02.545094616Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:19:02.545111243Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:19:02.545125255Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:19:02.545136851Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:19:07.559081446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:19:07.590141727Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:19:07.590282249Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:19:07.59212497Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:19:07.592776278Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:07.593110525Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:07.593168072Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:19:07.593184045Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:19:07.593197582Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:19:07.593249411Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:19:12.611543313Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:19:12.640861064Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:19:12.640973506Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:19:12.642116463Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:19:12.642322434Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:12.642485855Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:12.642524933Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:19:12.642540705Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:19:12.642553401Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:19:12.642895606Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:19:17.659441096Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:19:17.688645916Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:19:17.68875224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:19:17.689866492Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:19:17.690113443Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:17.690321411Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:17.690361515Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:19:17.690378169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:19:17.690391385Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:19:17.690782426Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:19:22.707072199Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:19:22.738684071Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:19:22.738788092Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:19:22.741213697Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:19:22.741509082Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:22.741813707Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:22.741862482Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:19:22.741878325Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:19:22.741943011Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:19:22.741956372Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:19:27.759116352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:19:27.788585728Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:19:27.788702755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:19:27.789843962Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:19:27.790047349Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:27.790190349Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:27.790223013Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:19:27.790270728Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:19:27.790285626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:19:27.790297244Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:19:32.810304706Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:19:32.840258565Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:19:32.840370375Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:19:32.843020024Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:19:32.843208943Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:32.843392401Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:32.843433268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:19:32.843447646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:19:32.843900683Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:19:32.843920127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:19:37.859844267Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:19:37.889065396Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:19:37.889175193Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:19:37.890213162Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:19:37.890437284Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:37.890599471Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:37.890638982Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:19:37.890654822Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:19:37.890668386Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:19:37.891013798Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:19:42.912273562Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:19:42.943113362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:19:42.94321028Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:19:42.944309811Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:19:42.944719628Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:42.944953096Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:42.944981819Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:19:42.944996152Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:19:42.945007424Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:19:42.945018877Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:19:47.958715152Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:19:47.988847992Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:19:47.988946509Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:19:47.990077688Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:19:47.990339198Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:47.990548182Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:47.990599655Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:19:47.990615491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:19:47.990629366Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:19:47.990991928Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:19:53.007542287Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:19:53.037361405Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:19:53.037453133Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:19:53.038947311Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:19:53.039569326Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:53.040026229Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:53.040133469Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:19:53.040151814Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:19:53.040190127Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:19:53.040202736Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:19:58.055854369Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:19:58.084639515Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:19:58.084759476Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:19:58.086669677Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:19:58.087196125Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:58.087741769Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:19:58.087911911Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:19:58.087932659Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:19:58.087945983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:19:58.087957572Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:20:03.110301243Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:20:03.141453237Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:20:03.141559728Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:20:03.143633881Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:20:03.144064534Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:03.144418169Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:03.144619097Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:20:03.14463469Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:20:03.144648455Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:20:03.14466086Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:20:08.159991378Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:20:08.189613643Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:20:08.189745222Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:20:08.191156718Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:20:08.191428559Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:08.191607946Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:08.191648019Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:20:08.191662963Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:20:08.191675083Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:20:08.191684429Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:20:13.208641831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:20:13.238510018Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:20:13.23862503Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:20:13.240186183Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:20:13.240866313Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:13.241375773Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:13.241497009Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:20:13.241522431Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:20:13.241536942Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:20:13.241549614Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:20:18.254395081Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:20:18.284803567Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:20:18.284911544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:20:18.286312363Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:20:18.286558639Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:18.286736156Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:18.286768548Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:20:18.2867832Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:20:18.286812612Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:20:18.286823996Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:20:23.302416328Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:20:23.332243946Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:20:23.33235225Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:20:23.335057333Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:20:23.335304223Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:23.335507262Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:23.33554748Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:20:23.335561313Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:20:23.335572465Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:20:23.335581077Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:20:28.354534996Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:20:28.384331464Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:20:28.384557639Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:20:28.386075739Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:20:28.386629596Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:28.387044382Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:28.387161959Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:20:28.387180337Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:20:28.387192995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:20:28.387205079Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:20:33.402284708Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:20:33.430053204Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:20:33.430159561Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:20:33.431188978Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:20:33.431430966Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:33.431638942Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:33.431704993Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:20:33.431723238Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:20:33.431736268Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:20:33.432181886Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:20:38.447028176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:20:38.478409651Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:20:38.478543223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:20:38.479541147Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:20:38.479740648Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:38.479901637Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:38.479941063Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:20:38.479956787Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:20:38.47996998Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:20:38.480413045Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:20:43.501505206Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:20:43.53101358Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:20:43.531127006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:20:43.533243926Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:20:43.53404681Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:43.53428922Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:43.534324761Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:20:43.534341144Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:20:43.53435412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:20:43.534366012Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:20:48.550931648Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:20:48.579701978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:20:48.579789316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:20:48.581075543Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:20:48.581373863Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:48.5816343Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:48.581698031Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:20:48.58171481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:20:48.582068778Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:20:48.582084933Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:20:53.601281901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:20:53.632917248Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:20:53.633047673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:20:53.634170862Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:20:53.63436836Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:53.634507947Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:53.634530562Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:20:53.634545236Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:20:53.634583824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:20:53.634595036Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:20:58.650835927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:20:58.681222473Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:20:58.681342597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:20:58.682471616Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:20:58.682785172Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:58.683037328Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:20:58.683094903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:20:58.683112443Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:20:58.683125263Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:20:58.683625412Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:21:03.699317426Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:21:03.729428282Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:21:03.729530595Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:21:03.73099297Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:21:03.731223901Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:03.731452764Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:03.731500228Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:21:03.731516114Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:21:03.731528621Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:21:03.731873662Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:21:08.747937591Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:21:08.77649655Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:21:08.776591034Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:21:08.778416959Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:21:08.778907419Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:08.779347915Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:08.779578223Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:21:08.779598589Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:21:08.779612637Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:21:08.779624554Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:21:13.796296748Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:21:13.827031858Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:21:13.827150722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:21:13.828371496Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:21:13.828755986Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:18.845007799Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:21:18.875160416Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:21:18.875285229Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:21:18.876839363Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:21:18.877156869Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:18.877372492Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:18.877405251Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:21:18.877419564Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:21:18.87743186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:21:18.877442107Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:21:23.896779946Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:21:23.926343389Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:21:23.926459875Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:21:23.928042761Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:21:23.928621763Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:23.929068885Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:23.929201432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:21:23.929225121Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:21:23.929249847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:21:23.929263249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:21:28.944155448Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:21:28.972019533Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:21:28.97212668Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:21:28.974194734Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:21:28.974772374Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:28.975279174Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:28.975405117Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:21:28.975422771Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:21:28.975436025Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:21:28.975951986Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:21:33.991232852Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:21:34.020065421Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:21:34.020154649Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:21:34.021421864Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:21:34.021792451Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:34.022094945Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:34.022125514Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:21:34.022142504Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:21:34.022156223Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:21:34.02216825Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:21:39.036275881Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:21:39.064105548Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:21:39.064210765Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:21:39.065420608Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:21:39.065629026Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:39.06578431Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:39.065810496Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:21:39.065825351Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:21:39.065839711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:21:39.066291407Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:21:44.082282042Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:21:44.114828775Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:21:44.114941565Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:21:44.11726639Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:21:44.117869565Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:44.118343608Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:44.118467574Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:21:44.118490883Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:21:44.118543445Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:21:44.118556878Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:21:49.130393328Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:21:49.15971326Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:21:49.159847613Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:21:49.161101115Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:21:49.161313635Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:49.161472243Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:49.16149596Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:21:49.161510753Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:21:49.161547519Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:21:49.161558574Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:21:54.178947701Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:21:54.21032337Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:21:54.210436949Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:21:54.212035737Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:21:54.212219904Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:54.212821483Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:54.212856788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:21:54.212872476Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:21:54.212886153Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:21:54.212898325Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:21:59.22929794Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:21:59.256544318Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:21:59.257072054Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:21:59.258427379Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:21:59.258869817Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:59.259267561Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:21:59.259300836Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:21:59.259316738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:21:59.259331065Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:21:59.259342797Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:22:04.276994386Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:22:04.308226317Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:22:04.308361649Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:22:04.309553153Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:22:04.309757675Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:04.309916091Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:04.309956631Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:22:04.30997246Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:22:04.309986247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:22:04.310254513Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:22:09.327924205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:22:09.359132972Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:22:09.359220468Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:22:09.361244727Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:22:09.361487603Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:09.361729909Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:09.36177056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:22:09.361786565Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:22:09.361846223Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:22:09.361855943Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:22:14.382091863Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:22:14.410744028Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:22:14.410842866Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:22:14.41221753Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:22:14.412659913Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:14.413082053Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:14.413117961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:22:14.413133672Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:22:14.413146802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:22:14.413158936Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:22:19.434283713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:22:19.462104455Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:22:19.462190899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:22:19.463204908Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:22:19.463413324Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:19.463612117Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:19.463642466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:22:19.463656077Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:22:19.463667035Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:22:19.463677194Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:22:24.481161529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:22:24.510641784Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:22:24.510731283Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:22:24.511890434Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:22:24.51214306Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:24.512481946Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:24.51254778Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:22:24.512565682Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:22:24.51257786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:22:24.512924715Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:22:29.529617196Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:22:29.559706752Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:22:29.559821927Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:22:29.561038153Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:22:29.561263827Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:29.561465179Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:29.561493956Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:22:29.561509304Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:22:29.561520622Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:22:29.561531499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:22:34.576690793Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:22:34.604594959Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:22:34.604714101Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:22:34.606396117Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:22:34.606580161Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:34.606738438Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:34.606779532Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:22:34.606794676Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:22:34.606849246Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:22:34.606861809Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:22:39.624891886Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:22:39.653814403Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:22:39.653904223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:22:44.676425143Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:22:44.703260451Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:22:44.703351801Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:22:44.705095933Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:22:44.705695106Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:44.705959669Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:44.706004409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:22:44.706169895Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:22:44.706184727Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:22:44.70619598Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:22:49.729511028Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:22:49.756683775Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:22:49.756785214Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:22:49.758191679Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:22:49.758432206Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:49.758619576Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:49.758651391Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:22:49.758665513Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:22:49.758677897Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:22:49.758687742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:22:54.774443733Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:22:54.80457266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:22:54.804742249Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:22:54.806532686Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:22:54.806732506Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:54.806897035Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:54.806937992Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:22:54.806955144Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:22:54.806969112Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:22:54.807256562Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:22:59.824277961Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:22:59.852743696Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:22:59.852862658Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:22:59.854646571Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:22:59.855165966Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:59.855763903Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:22:59.855978492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:22:59.856000674Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:22:59.856013749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:22:59.856025538Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:23:04.873297253Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:23:04.902403292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:23:04.90251356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:23:04.904018674Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:23:04.904662231Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:04.904858316Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:04.904887835Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:23:04.904903214Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:23:04.904917158Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:23:04.904930011Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:23:09.924288694Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:23:09.952060547Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:23:09.952186969Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:23:09.95390563Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:23:09.954469107Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:09.954822654Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:09.954873735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:23:09.954889403Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:23:09.955398645Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:23:09.955419806Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:23:14.972939164Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:23:15.022914106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:23:15.023031285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:23:15.029464801Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:23:15.029839997Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:15.030478431Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:15.030515973Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:23:15.030532567Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:23:15.030546253Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:23:15.030557824Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:23:20.046297441Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:23:20.074753126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:23:20.07485194Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:23:20.077103919Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:23:20.077340865Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:20.077881337Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:20.077915499Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:23:20.077951847Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:23:20.07796539Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:23:20.077976358Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:23:25.097277463Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:23:25.126164137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:23:25.126287131Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:23:25.129074268Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:23:25.129264915Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:25.129438901Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:25.129462913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:23:25.129478477Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:23:25.12949227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:23:25.129504196Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:23:30.144012823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:23:30.174632582Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:23:30.174759549Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:23:30.176264856Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:23:30.176669617Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:30.17689677Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:30.176925104Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:23:30.17694043Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:23:30.176954406Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:23:30.176966127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:23:35.192100875Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:23:35.222013432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:23:35.222102181Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:23:35.223700317Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:23:35.223863505Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:35.223996644Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:35.224025394Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:23:35.224040054Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:23:35.224053995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:23:35.224065342Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:23:40.239214815Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:23:40.269043072Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:23:40.269148436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:23:40.270348217Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:23:40.270598245Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:40.270770485Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:40.27079936Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:23:40.270812965Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:23:40.270833719Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:23:40.270843459Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:23:45.288794936Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:23:45.319047432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:23:45.319154494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:23:45.320273379Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:23:45.32072371Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:45.321018671Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:45.321073217Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:23:45.321089648Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:23:50.342059387Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:23:50.369138592Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:23:50.369623939Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:23:50.370857615Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:23:50.371277424Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:50.371642771Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:50.371876827Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:23:50.372064425Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:23:50.372084616Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:23:50.372096577Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:23:55.39028068Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:23:55.419215441Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:23:55.419327973Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:23:55.421034053Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:23:55.421621953Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:55.422070763Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:23:55.422254584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:23:55.422274026Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:23:55.422287675Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:23:55.422299764Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:24:00.435979865Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:24:00.465625453Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:24:00.466117956Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:24:00.467388594Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:24:00.46782066Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:00.468224532Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:00.468269012Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:24:00.468285261Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:24:00.468297918Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:24:00.468309265Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:24:05.487463561Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:24:05.516015387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:24:05.516157639Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:24:05.517413868Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:24:05.517689219Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:05.517925287Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:05.5179747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:24:05.517993099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:24:05.518006512Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:24:05.518486276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:24:10.534302501Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:24:10.563192326Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:24:10.563296472Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:24:10.564264845Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:24:10.564542187Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:10.564699108Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:10.564723196Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:24:10.564739521Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:24:10.564752859Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:24:10.564765213Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:24:15.581482875Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:24:15.611210147Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:24:15.611331883Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:24:15.612561631Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:24:15.612783398Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:15.613014217Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:15.613043048Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:24:15.613058972Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:24:15.61307158Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:24:15.613082881Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:24:20.629600535Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:24:20.659424137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:24:20.659530284Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:24:20.660661239Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:24:20.660951598Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:20.661179913Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:20.661207693Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:24:20.661223327Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:24:20.661249385Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:24:20.661262495Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:24:25.68219032Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:24:25.711154148Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:24:25.71125769Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:24:25.712308127Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:24:25.712688433Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:25.712845065Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:25.712873805Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:24:25.712889074Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:24:25.712902266Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:24:25.712914015Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:24:30.729302786Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:24:30.756749372Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:24:30.756857256Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:24:30.75794733Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:24:30.758151899Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:30.758323104Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:30.758353558Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:24:30.758368467Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:24:30.758381001Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:24:30.758392637Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:24:35.77939909Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:24:35.812944368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:24:35.813040167Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:24:35.814197511Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:24:35.814429287Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:35.814599166Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:35.814631458Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:24:35.814646156Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:24:35.814659171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:24:35.814668789Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:24:40.833270867Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:24:40.865173426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:24:40.86530489Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:24:40.866451015Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:24:40.866705541Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:40.866945445Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:40.866987254Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:24:40.867003567Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:24:40.867017929Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:24:40.867386353Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:24:45.890481231Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:24:45.920267447Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:24:45.920382122Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:24:45.921776219Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:24:45.921948704Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:45.922082846Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:45.922106381Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:24:45.922121195Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:24:45.92213491Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:24:45.922146663Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:24:50.933855387Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:24:50.965663415Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:24:50.965769083Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:24:50.967344515Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:24:50.967915305Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:50.968279824Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:50.968313153Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:24:50.968329056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:24:50.969080488Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:24:50.969102269Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:24:55.988363886Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:24:56.019463086Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:24:56.019556212Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:24:56.021752543Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:24:56.022364468Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:56.022849504Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:24:56.023075961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:24:56.023097868Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:24:56.023111141Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:24:56.023123934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:25:01.039023032Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:25:01.071307015Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:25:01.071410755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:25:01.072601829Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:25:01.072872695Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:01.073082952Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:01.07311147Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:25:01.073126977Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:25:01.073141523Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:25:01.073153918Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:25:06.096305135Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:25:06.125862383Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:25:06.125970207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:25:06.127702726Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:25:06.127930216Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:06.128183373Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:06.128208668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:25:06.128249686Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:25:06.128262736Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:25:06.128272299Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:25:11.147273362Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:25:11.176692028Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:25:11.176805989Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:25:11.17796577Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:25:11.178142374Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:11.178392602Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:11.178423136Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:25:11.178439276Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:25:11.178452568Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:25:11.178463815Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:25:16.195816756Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:25:16.226374173Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:25:16.226493643Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:25:16.227546641Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:25:16.227733169Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:16.227888829Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:16.22791614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:25:16.227930681Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:25:16.227943953Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:25:16.227956046Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:25:21.246336751Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:25:21.274041978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:25:21.274147033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:25:21.275181878Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:25:21.275437064Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:21.275597676Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:21.275628369Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:25:21.275643149Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:25:21.275655975Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:25:21.275667713Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:25:26.293285373Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:25:26.322921395Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:25:26.323029537Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:25:26.325209258Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:25:26.325501745Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:26.325727347Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:26.325767767Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:25:26.32578425Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:25:26.325797423Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:25:26.325808748Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:25:31.344010815Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:25:31.372351731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:25:31.372526541Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:25:31.373654699Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:25:31.373853337Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:31.373998003Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:31.374027332Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:25:31.374042725Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:25:31.374057739Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:25:31.374069763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:25:36.395228096Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:25:36.423193249Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:25:36.423300076Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:25:36.424974861Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:25:36.425624646Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:36.42608302Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:36.426190307Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:25:36.426207531Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:25:36.426221258Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:25:36.426232507Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:25:41.444286241Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:25:41.472273372Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:25:41.472482214Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:25:41.4750555Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:25:41.475528305Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:41.47571993Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:41.475749669Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:25:41.475764807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:25:41.475776742Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:25:41.47578798Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:25:46.494745869Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:25:46.526349602Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:25:46.526463961Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:25:46.527508683Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:25:46.527694089Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:46.527857822Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:46.527892914Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:25:46.527911134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:25:46.527924558Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:25:46.527936922Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:25:51.545421229Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:25:51.577483142Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:25:51.577574163Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:25:51.578693702Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:25:51.578921515Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:51.57908585Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:51.579132093Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:25:51.579148763Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:25:51.579161639Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:25:51.579545574Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:25:56.594627302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:25:56.623035844Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:25:56.623155779Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:25:56.624161044Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:25:56.624348181Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:56.624664607Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:25:56.624689297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:25:56.62470558Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:25:56.624718628Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:25:56.624730705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:26:01.658787313Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:26:01.729012736Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:26:01.729128585Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:26:01.730414809Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:26:01.730721086Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:06.750289145Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:26:06.779599648Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:26:06.779690584Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:26:06.782022455Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:26:06.782330653Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:06.782554672Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:06.782585746Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:26:06.782601807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:26:06.782636863Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:26:06.782648127Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:26:11.796777465Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:26:11.824877032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:26:11.824984228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:26:11.82601368Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:26:11.826256702Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:11.826465521Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:11.826503861Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:26:11.826519619Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:26:11.826532928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:26:11.826837574Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:26:16.849021296Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:26:16.877558656Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:26:16.877681608Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:26:16.878758461Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:26:16.878970731Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:16.879188084Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:16.87921422Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:26:16.879229402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:26:16.879254921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:26:16.879266934Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:26:21.900973985Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:26:21.930355091Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:26:21.930465264Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:26:21.932215322Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:26:21.932889689Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:21.933307424Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:21.93334191Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:26:21.933357161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:26:21.933371663Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:26:21.933383491Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:26:26.950555184Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:26:26.980090654Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:26:26.980196964Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:26:26.981422957Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:26:26.981633247Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:26.981807272Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:26.981853283Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:26:26.981868115Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:26:26.981880988Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:26:26.982215477Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:26:31.997387198Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:26:32.02705604Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:26:32.027145774Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:26:32.028269668Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:26:32.028620093Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:32.028916795Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:32.028950675Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:26:32.028966038Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:26:32.029014278Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:26:32.029026388Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:26:37.044979209Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:26:37.078318299Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:26:37.078428935Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:26:37.079520504Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:26:37.079701362Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:37.079858065Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:37.079898668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:26:37.079914347Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:26:37.079927162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:26:37.080565525Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:26:42.09868242Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:26:42.129495238Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:26:42.129610777Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:26:42.13072571Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:26:42.130904033Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:42.131042459Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:42.131075108Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:26:42.131090847Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:26:42.1311036Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:26:42.131114774Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:26:47.147317312Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:26:47.177575398Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:26:47.177667193Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:26:47.180034226Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:26:47.180304307Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:47.1805892Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:47.180634663Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:26:47.180650955Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:26:47.180663638Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:26:47.18110309Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:26:52.204286882Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:26:52.233436958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:26:52.233537322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:26:52.235078833Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:26:52.235704264Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:52.236100811Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:52.236134436Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:26:52.236149873Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:26:52.236162789Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:26:52.236174596Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:26:57.251856029Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:26:57.280923404Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:26:57.281030911Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:26:57.282081822Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:26:57.282289825Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:57.282463291Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:26:57.282493565Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:26:57.28250853Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:26:57.282522018Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:26:57.282533554Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:27:02.300968378Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:27:02.330876885Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:27:02.330974384Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:27:02.332106435Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:27:02.332556479Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:02.332758262Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:02.33280107Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:27:02.33281713Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:27:02.332831664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:27:02.333263505Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:27:07.348846201Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:27:07.380626561Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:27:07.380725094Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:27:07.382414121Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:27:07.383055558Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:07.383616985Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:07.38373928Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:27:07.383763099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:27:07.383821301Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:27:07.383834497Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:27:12.403281182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:27:12.433717802Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:27:12.433846357Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:27:12.434997544Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:27:12.435220986Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:12.435421992Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:12.435446522Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:27:12.43546146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:27:12.435474893Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:27:12.435486609Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:27:17.451053434Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:27:17.481420703Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:27:17.481526944Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:27:17.48267411Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:27:17.482909946Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:17.483090636Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:17.48312172Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:27:17.48313738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:27:17.48315007Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:27:17.483162154Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:27:22.502990269Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:27:22.534088553Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:27:22.534201118Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:27:22.535396417Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:27:22.535642753Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:22.535808018Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:22.535838836Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:27:22.535855695Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:27:22.535868506Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:27:22.535880088Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:27:27.551638599Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:27:27.582050574Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:27:27.582159134Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:27:27.583242847Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:27:27.58344824Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:27.583614384Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:27.583644409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:27:27.58365917Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:27:27.583670374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:27:27.583679726Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:27:32.600299389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:27:32.627159693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:27:32.627257962Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:27:32.628310481Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:27:32.628662409Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:32.628833321Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:32.628882375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:27:32.628898101Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:27:32.62891195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:27:32.629317969Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:27:37.64475445Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:27:37.675356495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:27:37.675446336Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:27:37.67690731Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:27:37.677398976Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:37.677754157Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:37.677782896Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:27:37.677796996Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:27:37.677810615Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:27:37.677822017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:27:42.697336096Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:27:42.727270928Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:27:42.727393018Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:27:42.729198821Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:27:42.729698282Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:42.729920739Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:42.729951695Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:27:42.729984237Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:27:42.729997577Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:27:42.730009348Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:27:47.747954075Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:27:47.776016182Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:27:47.776109496Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:27:47.777841139Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:27:47.778335622Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:47.778490748Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:47.77852006Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:27:47.778534317Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:27:47.778548103Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:27:47.778559634Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:27:52.798286107Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:27:52.826445487Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:27:52.8265415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:27:52.827568286Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:27:52.827768733Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:52.827956384Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:52.827995439Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:27:52.828010545Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:27:52.828024527Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:27:52.828253555Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:27:57.844635179Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:27:57.872370917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:27:57.872585841Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:27:57.873706037Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:27:57.873882307Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:57.874018022Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:27:57.874040023Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:27:57.874055046Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:27:57.874069041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:27:57.874080852Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:28:02.893753519Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:28:02.925062218Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:28:02.925173522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:28:02.926775318Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:28:02.927278236Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:02.927473024Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:02.927503437Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:28:02.927519305Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:28:02.927532175Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:28:02.92754355Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:28:07.942949482Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:28:07.974754914Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:28:07.975283683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:28:07.976641444Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:28:07.977092176Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:07.977547899Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:07.977669863Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:28:07.977688006Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:28:07.977702657Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:28:07.977714653Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:28:12.996312388Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:28:13.024614495Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:28:13.024725716Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:28:13.025958364Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:28:13.026177745Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:13.0263661Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:13.026406769Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:28:13.026421623Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:28:13.026433828Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:28:13.026838268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:28:18.04430085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:28:18.075093094Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:28:18.075226423Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:28:18.076300734Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:28:18.076658525Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:18.076887687Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:18.076917737Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:28:18.076934674Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:28:18.07694791Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:28:18.076959884Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:28:23.091822999Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:28:23.12344123Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:28:23.123546818Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:28:23.124749461Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:28:23.124993264Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:23.125163619Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:23.125192806Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:28:23.125207949Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:28:23.125219765Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:28:23.125229827Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:28:28.139080812Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:28:28.170015344Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:28:28.170104894Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:28:28.171227891Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:28:28.171538489Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:28.171814173Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:28.171862648Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:28:28.171877516Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:28:28.17189039Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:28:28.171901636Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:28:33.188283318Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:28:33.216972203Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:28:33.217083813Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:28:33.218164692Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:28:33.218399236Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:33.218558373Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:33.218631972Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:28:33.218647739Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:28:33.218659788Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:28:38.234922806Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:28:38.265070883Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:28:38.265170579Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:28:38.266473846Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:28:38.266675552Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:38.266842276Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:38.266882565Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:28:38.266899229Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:28:38.266912742Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:28:38.267263249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:28:43.283168364Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:28:43.311973184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:28:43.312060066Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:28:43.313210784Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:28:43.313408472Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:43.313551513Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:43.313600297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:28:43.313615879Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:28:43.313629105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:28:43.313641114Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:28:48.33177816Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:28:48.359932129Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:28:48.360105023Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:28:48.36330322Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:28:53.380056073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:28:53.41132485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:28:53.411452597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:28:53.413125872Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:28:53.413657834Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:53.414044499Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:53.414076736Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:28:53.414092563Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:28:53.414105697Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:28:53.414117221Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:28:58.430263987Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:28:58.45928882Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:28:58.459385121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:28:58.460648219Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:28:58.460906831Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:58.461051761Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:28:58.461075159Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:28:58.461091046Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:28:58.461104239Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:28:58.461117292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:29:03.48226404Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:29:03.511913153Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:29:03.512025173Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:29:03.513468741Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:29:03.513832857Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:03.51415353Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:03.514207271Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:29:03.514290436Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:29:03.514306007Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:29:03.514316057Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:29:08.527456439Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:29:08.558625562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:29:08.558729968Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:29:08.559705892Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:29:08.559879464Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:08.560013839Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:08.560036384Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:29:08.560051644Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:29:08.56006467Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:29:08.560076324Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:29:13.580599222Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:29:13.609758489Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:29:13.609867252Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:29:13.611547825Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:29:13.611975205Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:13.612166457Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:13.612197054Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:29:13.612211701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:29:13.612225343Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:29:13.612246104Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:29:18.630350553Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:29:18.660307983Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:29:18.660459595Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:29:18.662039736Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:29:18.662578151Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:18.662955268Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:18.662989043Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:29:18.663004762Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:29:18.663018619Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:29:18.663030208Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:29:23.678990447Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:29:23.706867606Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:29:23.706983122Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:29:23.707979943Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:29:23.708152855Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:23.708324711Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:23.708353846Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:29:23.708366969Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:29:23.708379225Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:29:23.708389006Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:29:28.725033518Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:29:28.752957667Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:29:28.753066008Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:29:28.756124398Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:29:28.756354691Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:28.756629228Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:28.756669563Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:29:28.756685017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:29:28.756696054Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:29:28.756706984Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:29:33.775316936Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:29:33.803930674Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:29:33.80403663Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:29:33.805377184Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:29:33.805654807Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:33.805909816Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:33.8059339Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:29:33.805949606Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:29:33.805980619Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:29:33.805993156Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:29:38.821550516Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:29:38.851408089Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:29:38.851519824Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:29:38.854466163Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:29:38.85470468Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:38.854873305Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:38.854898934Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:29:38.854914209Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:29:38.854925902Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:29:38.854937064Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:29:43.875291511Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:29:43.905257672Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:29:43.905353758Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:29:43.907477111Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:29:43.907724458Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:43.907905168Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:43.907946661Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:29:43.907961644Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:29:43.907975722Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:29:43.908253123Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:29:48.925386166Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:29:48.956293394Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:29:48.956488034Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:29:48.957620698Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:29:48.957832749Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:48.958003437Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:48.958031356Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:29:48.958046345Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:29:48.958058553Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:29:48.958068434Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:29:53.978773896Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:29:54.009398397Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:29:54.009522929Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:29:54.010685407Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:29:54.010873476Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:54.011024144Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:54.01104814Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:29:54.011063418Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:29:54.011077018Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:29:54.011089055Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:29:59.030128949Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:29:59.058135975Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:29:59.058254755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:29:59.059973866Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:29:59.060167477Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:59.060364054Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:29:59.060815123Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:29:59.060986117Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:29:59.061004583Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:29:59.061016354Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:30:04.081575031Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:30:04.114358519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:30:04.114458369Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:30:04.115762769Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:30:04.116199228Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:04.11677254Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:04.116829681Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:30:04.116846683Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:30:04.116862179Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:30:04.116874937Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:30:09.136290862Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:30:09.167266645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:30:09.167358639Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:30:09.170123364Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:30:09.17037597Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:09.170578112Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:09.170622998Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:30:09.170639291Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:30:09.170649957Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:30:09.170659848Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:30:14.184962695Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:30:14.214261708Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:30:14.214403977Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:30:14.215499589Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:30:14.215685748Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:14.215822665Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:14.215849609Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:30:14.21586392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:30:14.215891909Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:30:14.215904161Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:30:19.23582044Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:30:19.263526548Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:30:19.263628167Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:30:19.264854942Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:30:19.265142942Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:19.265454846Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:19.265504086Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:30:19.26552041Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:30:19.265533932Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:30:19.265544429Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:30:24.288264688Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:30:24.318273873Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:30:24.318393934Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:30:24.320064578Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:30:24.320777407Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:24.320934891Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:24.320965493Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:30:24.320982486Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:30:24.320996871Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:30:24.321008818Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:30:29.337089236Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:30:29.365492666Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:30:29.36560696Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:30:29.367031405Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:30:29.36733073Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:29.367657109Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:29.36768788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:30:29.367713171Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:30:29.36772715Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:30:29.36773792Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:30:34.390843125Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:30:34.42105078Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:30:34.421170511Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:30:34.422701604Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:30:34.423388498Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:34.423621824Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:34.423654622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:30:34.423671157Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:30:34.423682945Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:30:34.423694432Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:30:39.445171982Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:30:39.473627715Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:30:39.473727719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:30:39.476034266Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:30:39.476384356Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:39.477062572Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:39.477115372Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:30:39.477131332Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:30:39.477144856Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:30:39.477157011Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:30:44.495393831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:30:44.526003334Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:30:44.526116054Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:30:44.529444112Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:30:44.529992744Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:44.530196155Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:44.530226904Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:30:44.530252148Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:30:44.530291226Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:30:44.530301609Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:30:49.55083383Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:30:49.578493063Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:30:49.578588826Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:30:49.579691732Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:30:49.579931087Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:49.580095088Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:49.580146497Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:30:49.580162352Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:30:49.580175615Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:30:49.580187076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:30:54.602868584Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:30:54.634127734Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:30:54.634266315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:30:54.635790121Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:30:54.636167555Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:54.636619773Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:54.636658548Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:30:54.63667275Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:30:54.636700158Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:30:54.636712657Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:30:59.652290394Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:30:59.679330965Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:30:59.679453778Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:30:59.680979536Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:30:59.681427729Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:59.681778609Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:30:59.681806409Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:30:59.681821806Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:30:59.681834345Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:30:59.681845865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:31:04.702124454Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:31:04.733488035Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:31:04.733595001Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:31:04.735152851Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:31:04.7356482Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:04.736007924Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:04.73604248Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:31:04.736057401Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:31:04.736071296Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:31:04.736082855Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:31:09.751343317Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:31:09.779903104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:31:09.78000736Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:31:09.781132755Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:31:09.781388273Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:09.781585189Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:09.781627723Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:31:09.781660235Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:31:09.782013861Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:31:09.782029656Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:31:14.807308064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:31:14.836956756Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:31:14.837049111Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:31:14.838195326Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:31:14.838391724Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:14.838528962Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:14.838551717Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:31:14.838585924Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:31:14.838599997Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:31:14.838611713Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:31:19.855265059Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:31:19.884158198Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:31:19.884280685Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:31:19.886099299Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:31:19.88656405Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:19.886932681Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:19.886966688Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:31:19.886982678Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:31:19.886995583Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:31:19.887007084Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:31:24.907379597Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:31:24.937189925Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:31:24.93732812Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:31:24.938762375Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:31:24.93922812Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:24.939621329Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:24.939654978Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:31:24.939671212Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:31:24.939695335Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:31:24.939706956Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:31:29.956770053Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:31:29.987335546Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:31:29.987436044Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:31:29.988733449Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:31:29.988964672Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:29.989128594Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:29.98915177Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:31:29.989166807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:31:29.989179896Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:31:29.989192566Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:31:35.011289233Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:31:35.039255228Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:31:35.039367032Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:31:35.040409401Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:31:35.040672913Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:35.040834948Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:35.040860564Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:31:35.040874991Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:31:35.040921521Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:31:35.040933867Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:31:40.057298019Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:31:40.0863594Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:31:40.086451517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:31:40.087545734Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:31:40.087739168Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:40.08789567Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:40.087934826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:31:40.087950786Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:31:40.088024312Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:31:40.08803612Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:31:45.107501565Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:31:45.134839704Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:31:45.134937437Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:31:45.137406172Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:31:45.138000246Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:45.138326526Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:45.13846703Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:31:45.138511361Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:31:45.138854569Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:31:45.138873949Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:31:50.157295064Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:31:50.188653509Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:31:50.188738522Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:31:50.189851954Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:31:50.190110394Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:50.190373941Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:50.190402478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:31:50.190417331Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:31:50.190430835Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:31:50.190440289Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:31:55.207939193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:31:55.239039436Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:31:55.239160457Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:31:55.240195089Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:31:55.240413768Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:55.240751865Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:31:55.240779626Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:31:55.240794445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:31:55.240808482Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:31:55.240820425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:32:00.258908874Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:32:00.293450439Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:32:00.293546157Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:32:00.297425564Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:32:00.297638412Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:00.297813452Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:00.297856473Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:32:00.297872393Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:32:00.297886307Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:32:00.298143916Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:32:05.319086412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:32:05.348258497Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:32:05.348380316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:32:05.351036939Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:32:05.351214518Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:05.351383815Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:05.351413658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:32:05.351428196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:32:05.351442138Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:32:05.351453604Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:32:10.370281656Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:32:10.400401118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:32:10.400679816Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:32:10.403000428Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:32:10.403203244Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:15.419517586Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:32:15.446592552Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:32:15.446684174Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:32:15.447722738Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:32:15.447916698Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:15.448064302Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:15.448115762Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:32:15.448130952Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:32:15.44818867Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:32:15.448200921Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:32:20.466618032Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:32:20.49670957Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:32:20.496812883Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:32:20.497940486Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:32:20.498169534Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:20.498361403Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:20.498403334Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:32:20.498421013Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:32:20.498434633Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:32:20.498784017Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:32:25.516284579Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:32:25.548080285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:32:25.54821831Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:32:25.549908455Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:32:25.550472634Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:25.550876749Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:25.550908835Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:32:25.550924799Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:32:25.550937938Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:32:25.550950072Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:32:30.569452119Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:32:30.599366901Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:32:30.599482061Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:32:30.601323271Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:32:30.601552675Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:30.601697588Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:30.601753025Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:32:30.601768247Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:32:30.601807223Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:32:30.601819442Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:32:35.615950154Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:32:35.644944796Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:32:35.645055767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:32:35.646352319Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:32:35.646626729Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:35.64685097Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:35.646909998Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:32:35.646928092Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:32:35.646940896Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:32:35.647253667Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:32:40.663314079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:32:40.691447179Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:32:40.691538808Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:32:40.693542705Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:32:40.6940774Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:40.694407337Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:40.694441608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:32:40.694457681Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:32:40.694470953Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:32:40.694482197Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:32:45.719315606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:32:45.750736162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:32:45.750846976Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:32:45.752229045Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:32:45.752940804Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:45.753474805Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:45.753727546Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:32:45.75374826Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:32:45.753913672Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:32:45.753932895Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:32:50.772293585Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:32:50.801372687Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:32:50.801485761Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:32:50.803059867Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:32:50.803617533Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:50.804122452Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:50.804254871Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:32:50.804292019Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:32:50.804819743Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:32:50.804838424Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:32:55.821280529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:32:55.852004604Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:32:55.852095566Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:32:55.853323649Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:32:55.853501912Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:55.853636024Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:32:55.853659001Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:32:55.853673522Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:32:55.85368798Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:32:55.853700054Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:33:00.870593315Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:33:00.90226119Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:33:00.902384055Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:33:00.905224726Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:33:00.905939484Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:00.906483137Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:00.906756041Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:33:00.907080715Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:33:00.90710167Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:33:00.907212704Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:33:05.926684812Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:33:05.956677168Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:33:05.956765884Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:33:05.957918228Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:33:05.958133387Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:05.958342274Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:05.958381873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:33:05.958398135Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:33:05.958411532Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:33:05.958729462Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:33:10.977845145Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:33:11.006938048Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:33:11.007049617Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:33:11.008274979Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:33:11.008699447Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:11.00893654Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:11.008978944Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:33:11.008994624Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:33:11.00900891Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:33:16.025023001Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:33:16.055123718Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:33:16.055246013Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:33:16.056385834Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:33:16.056740725Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:16.05691021Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:16.056938719Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:33:16.056954968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:33:16.05696908Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:33:16.056980769Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:33:21.077293164Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:33:21.106683792Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:33:21.106801547Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:33:21.109306427Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:33:21.109570754Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:21.109801297Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:21.109847052Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:33:21.109862626Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:33:21.109877158Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:33:21.110294044Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:33:26.132070899Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:33:26.162085957Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:33:26.162197356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:33:26.163905464Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:33:26.164623289Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:26.165130868Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:26.165263782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:33:26.165302412Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:33:26.165316247Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:33:26.165328682Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:33:31.180270217Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:33:31.209271302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:33:31.209363494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:33:31.211072113Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:33:31.211600962Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:31.21206198Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:31.212094485Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:33:31.212111224Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:33:31.21212459Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:33:31.212136234Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:33:36.22969886Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:33:36.261228111Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:33:36.261360913Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:33:36.26277534Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:33:36.26346812Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:36.263610338Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:36.263638051Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:33:36.263653004Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:33:36.263666462Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:33:36.263678321Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:33:41.282300494Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:33:41.310673119Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:33:41.31080712Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:33:41.311851404Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:33:41.31209246Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:41.312287907Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:41.312333851Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:33:41.312349422Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:33:41.31236329Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:33:41.3128836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:33:46.333320926Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:33:46.363492932Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:33:46.363584802Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:33:46.365422467Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:33:46.365733903Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:46.365995045Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:46.366032619Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:33:46.366047551Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:33:46.366059926Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:33:46.366069711Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:33:51.381561302Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:33:51.410810733Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:33:51.410917194Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:33:51.412673272Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:33:51.413440111Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:51.413845029Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:51.414080156Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:33:51.414323717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:33:51.414342427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:33:51.414355264Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:33:56.431073141Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:33:56.461480798Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:33:56.461593112Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:33:56.462661185Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:33:56.46291512Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:56.463093431Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:33:56.463122779Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:33:56.463138047Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:33:56.463151234Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:33:56.463161905Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:34:01.483269463Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:34:01.514750004Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:34:01.514845852Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:34:01.516253222Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:34:01.516645232Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:01.516912407Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:01.516965363Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:34:01.516981078Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:34:01.516994773Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:34:01.517384924Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:34:06.534288008Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:34:06.564751658Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:34:06.564832534Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:34:06.567106316Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:34:06.56737678Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:06.567615035Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:06.567653917Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:34:06.567669435Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:34:06.567680363Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:34:06.567690475Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:34:11.587284576Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:34:11.617550125Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:34:11.617642444Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:34:11.618730858Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:34:11.618944222Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:11.619128565Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:11.619167661Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:34:11.619182816Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:34:11.619196503Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:34:11.619540445Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:34:16.638788247Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:34:16.668536907Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:34:16.668841294Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:34:16.670018189Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:34:16.670291528Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:16.670482911Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:16.670512926Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:34:16.670527251Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:34:16.670539118Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:34:16.670550832Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:34:21.688303716Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:34:21.717984685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:34:21.718103357Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:34:21.719747188Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:34:21.720320457Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:21.720894549Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:21.721013024Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:34:21.721032485Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:34:21.721045531Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:34:21.721056128Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:34:26.734840879Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:34:26.764182278Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:34:26.764350083Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:34:26.765730686Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:34:26.765971406Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:26.766186889Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:26.766270362Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:34:26.766295569Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:34:26.766309161Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:34:26.766320465Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:34:31.786918225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:34:31.815962082Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:34:31.816062085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:34:31.817314825Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:34:31.817513909Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:31.817674659Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:31.817744676Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:34:31.817759944Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:34:31.817817863Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:34:31.817829784Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:34:36.834720491Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:34:36.866169943Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:34:36.866301992Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:34:36.867428698Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:34:36.867628767Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:36.867792942Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:36.867834664Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:34:36.867850348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:34:36.867864956Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:34:36.868217943Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:34:41.889526146Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:34:41.91966559Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:34:41.919772675Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:34:41.920886142Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:34:41.92110704Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:41.921364467Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:41.921402079Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:34:41.92141957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:34:41.921433559Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:34:41.921445497Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:34:46.939279691Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:34:46.968712374Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:34:46.968818202Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:34:46.971100833Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:34:46.971371889Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:46.971556135Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:46.971595633Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:34:46.971610209Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:34:46.971621415Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:34:46.971632254Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:34:51.987933443Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:34:52.016870579Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:34:52.016961692Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:34:52.018480612Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:34:52.019026629Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:52.019525049Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:52.019640322Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:34:52.019665427Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:34:52.019680405Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:34:52.019692283Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:34:57.037160068Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:34:57.068267364Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:34:57.068377052Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:34:57.069667335Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:34:57.069871133Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:57.070038815Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:34:57.070068862Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:34:57.070083686Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:34:57.070095179Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:34:57.070105395Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:35:02.112177899Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:35:02.148855553Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:35:02.148995055Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:35:02.151388698Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:35:02.152089094Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:02.152796918Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:02.152857276Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:35:02.152873387Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:35:02.152887958Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:35:02.153253243Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:35:07.169367523Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:35:07.199606978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:35:07.199720563Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:35:07.201611128Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:35:07.201935129Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:07.202142777Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:07.202181949Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:35:07.202197475Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:35:07.202208917Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:35:07.202219081Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:35:12.221867946Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:35:12.249262052Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:35:12.24938085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:35:12.250871642Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:35:12.25133212Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:12.251497935Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:12.251526738Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:35:12.251561762Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:35:12.25157533Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:35:12.251587263Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:35:17.266451457Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:35:17.295011041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:35:17.295129674Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:35:17.296776522Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:35:17.29729201Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:17.297721973Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:17.297841375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:35:17.297874214Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:35:17.297887478Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:35:17.297898929Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:35:22.32072797Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:35:22.351066746Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:35:22.351194584Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:35:22.353261731Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:35:22.353501652Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:22.353687708Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:22.353716423Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:35:22.353731766Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:35:22.35421038Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:35:22.354224857Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:35:27.371927119Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:35:27.401186325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:35:27.401320322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:35:27.402922215Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:35:27.403403103Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:27.403799155Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:27.40383206Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:35:27.403848635Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:35:27.403879559Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:35:27.403891793Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:35:32.421301284Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:35:32.449676174Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:35:32.449801385Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:35:32.451108588Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:35:32.451323106Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:32.451491343Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:32.451519598Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:35:32.451535182Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:35:32.451548151Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:35:32.451560035Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:35:37.467232905Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:35:37.494961067Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:35:37.495051769Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:35:37.496256229Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:35:37.496552086Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:37.496744192Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:37.496790614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:35:37.496806104Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:35:37.496819601Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:35:37.497214439Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:35:42.514190337Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:35:42.5426308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:35:42.542720718Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:35:42.543781893Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:35:42.544128361Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:42.544340177Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:42.544370807Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:35:42.544385287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:35:42.544564134Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:35:42.544580504Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:35:47.559739158Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:35:47.590271032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:35:47.590377706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:35:47.591464991Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:35:47.591648162Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:47.591800223Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:47.591822841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:35:47.591837983Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:35:47.591851676Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:35:47.591863362Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:35:52.608230384Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:35:52.636832831Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:35:52.636929464Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:35:52.638484276Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:35:52.638790475Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:52.639442454Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:52.639503711Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:35:52.639519549Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:35:52.63953285Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:35:52.639544571Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:35:57.654505897Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:35:57.682663407Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:35:57.682780758Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:35:57.683872974Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:35:57.684071064Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:57.684231214Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:35:57.68427214Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:35:57.684287468Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:35:57.684300159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:35:57.684311356Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:36:02.703302536Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:36:02.775431044Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:36:02.775529273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:36:02.777412731Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:36:02.777968223Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:02.778167502Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:02.778201528Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:36:02.778217685Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:36:02.77823082Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:36:02.778586158Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:36:07.794593853Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:36:07.822024864Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:36:07.822117339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:36:07.823229912Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:36:07.823444547Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:07.823601615Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:07.82362368Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:36:07.823638632Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:36:07.823652332Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:36:07.823664Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:36:12.845312449Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:36:12.875377747Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:36:12.875472326Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:36:12.876775105Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:36:12.877077715Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:12.877344476Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:12.877386826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:36:12.877454506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:36:12.877493874Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:36:12.8778492Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:36:17.892065435Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:36:17.923192576Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:36:17.923318877Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:36:17.9243663Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:36:17.924677451Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:17.924859313Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:17.924882903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:36:17.924897958Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:36:17.924910603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:36:17.924922145Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:36:22.94150118Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:36:22.97272812Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:36:22.972844764Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:36:22.974590916Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:36:22.975121755Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:22.975640157Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:22.97583476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:36:22.975856736Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:36:22.97586979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:36:22.975881656Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:36:27.995483905Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:36:28.026072229Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:36:28.026163803Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:36:28.027571145Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:36:28.027774601Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:28.027937296Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:28.027967372Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:36:28.027983034Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:36:28.027996438Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:36:28.028007869Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:36:33.04800203Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:36:33.078192795Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:36:33.078321506Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:36:33.07985245Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:36:33.080397401Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:33.080995016Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:33.081117421Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:36:33.081156154Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:36:33.081170808Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:36:33.081183857Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:36:38.094471255Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:36:38.124806821Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:36:38.124897914Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:36:38.126123655Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:36:38.126365905Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:38.126528912Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:38.126556802Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:36:38.126571942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:36:38.126585495Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:36:38.12659674Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:36:43.14693378Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:36:43.177455473Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:36:43.177558355Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:36:43.178898792Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:36:43.179333113Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:43.179706326Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:43.179927364Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:36:43.18009649Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:36:43.180355188Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:36:43.180389331Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:36:48.199286722Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:36:48.231507092Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:36:48.231591527Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:36:48.233084412Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:36:48.233595178Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:48.233997519Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:48.234031227Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:36:48.234045835Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:36:48.234060898Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:36:48.234072849Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:36:53.247937173Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:36:53.278618888Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:36:53.278734597Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:36:53.280195985Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:36:53.280410168Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:53.280721032Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:53.280783124Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:36:53.280797897Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:36:53.280825185Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:36:53.280835489Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:36:58.295606634Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:36:58.327049156Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:36:58.327182502Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:36:58.328303127Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:36:58.328666038Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:58.328858011Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:36:58.328882823Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:36:58.328898821Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:36:58.328911746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:36:58.328923901Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:37:03.353082804Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:37:03.383737615Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:37:03.383864995Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:37:03.387109063Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:37:03.387635485Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:03.388063822Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:03.388098804Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:37:03.388114366Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:37:03.388127866Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:37:03.388139838Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:37:08.405729189Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:37:08.431555347Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:37:08.431673325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:37:08.432782857Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:37:08.432960481Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:08.433107243Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:08.433130782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:37:08.433145689Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:37:08.433158991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:37:08.433170619Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:37:13.447116831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:37:13.478178388Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:37:13.478295078Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:37:13.480862428Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:37:13.481059398Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:13.481267975Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:13.481337574Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:37:13.481356032Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:37:13.481369998Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:37:13.481616907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:37:18.496276275Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:37:18.524535306Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:37:18.524650331Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:37:18.525744929Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:37:18.52593495Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:18.52608097Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:18.526108503Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:37:18.52612365Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:37:18.526137055Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:37:18.526148815Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:37:23.551298977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:37:23.581683794Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:37:23.581809945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:37:23.583183118Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:37:23.583543952Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:23.583785056Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:23.583868104Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:37:23.583884291Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:37:23.583925871Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:37:23.583938124Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:37:28.604527901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:37:28.632505055Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:37:28.632616742Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:37:28.633701226Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:37:28.633859757Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:28.633993741Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:28.634015474Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:37:28.634029691Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:37:28.634042287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:37:28.634053962Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:37:33.655561727Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:37:33.682090298Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:37:33.682212461Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:37:33.683329713Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:37:33.683551666Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:33.683709134Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:33.683734406Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:37:33.68374966Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:37:33.683763431Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:37:33.683775129Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:37:38.698888469Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:37:38.728803378Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:37:38.728914198Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:37:38.730044431Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:37:38.730230577Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:38.730415273Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:38.730441861Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:37:38.730457016Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:37:38.73046944Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:37:38.730481115Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:37:43.762229698Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:37:43.793898271Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:37:43.793992662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:37:43.796102484Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:37:43.796818024Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:43.796986157Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:43.797018496Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:37:43.797034823Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:37:43.797048679Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:37:43.797060318Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:37:48.816287692Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:37:48.846935351Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:37:48.847039585Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:37:48.848175538Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:37:48.848383585Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:48.848665701Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:48.848691301Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:37:48.848707616Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:37:48.848721206Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:37:48.848733228Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:37:53.869300237Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:37:53.901519032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:37:53.901646721Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:37:53.902885172Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:37:53.903119779Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:53.903322458Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:53.903365375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:37:53.903382027Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:37:53.90339559Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:37:53.903407581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:37:58.919481417Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:37:58.9494785Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:37:58.949571382Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:37:58.950972574Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:37:58.95125724Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:58.951458455Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:37:58.951481962Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:37:58.951497307Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:37:58.951510378Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:37:58.951521835Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:38:03.972374426Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:38:04.002687007Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:38:04.00281979Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:38:04.004314347Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:38:09.021323807Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:38:09.050994983Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:38:09.051087738Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:38:09.05257575Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:38:09.053005823Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:09.053154962Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:09.053178614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:38:09.05319402Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:38:09.053207282Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:38:09.053219914Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:38:14.070290011Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:38:14.100019309Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:38:14.100127059Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:38:14.101696917Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:38:14.102170244Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:14.102593858Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:14.102705469Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:38:14.102730678Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:38:14.102743837Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:38:14.102755069Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:38:19.118335202Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:38:19.145674184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:38:19.14580139Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:38:19.147203184Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:38:19.147732809Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:19.147887842Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:19.147910822Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:38:19.147926756Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:38:19.147940437Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:38:19.147952337Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:38:24.167732077Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:38:24.197539735Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:38:24.197666175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:38:24.198785667Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:38:24.198957185Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:24.199113217Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:24.199141266Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:38:24.199157114Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:38:24.199169824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:38:24.199181549Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:38:29.216519987Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:38:29.245053892Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:38:29.245144869Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:38:29.246610618Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:38:29.247146993Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:29.247615511Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:29.247729719Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:38:29.24775396Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:38:29.247767216Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:38:29.247779034Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:38:34.259786045Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:38:34.291288658Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:38:34.291375918Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:38:34.292944522Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:38:34.293520877Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:34.29370213Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:34.293725365Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:38:34.293740674Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:38:34.293753841Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:38:34.293765262Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:38:39.310278985Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:38:39.340014087Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:38:39.340096662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:38:39.341390814Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:38:39.341616474Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:39.341800255Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:39.341846251Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:38:39.341861657Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:38:39.341874838Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:38:39.342248781Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:38:44.364308209Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:38:44.395631172Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:38:44.395755044Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:38:44.396967289Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:38:44.397212743Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:44.397452896Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:44.397485538Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:38:44.397500341Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:38:44.397512634Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:38:44.397522949Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:38:49.41570615Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:38:49.443873189Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:38:49.443962804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:38:49.445149139Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:38:49.445383375Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:49.445547729Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:49.445586128Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:38:49.445600912Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:38:49.445615227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:38:49.445928192Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:38:54.462296015Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:38:54.491649857Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:38:54.491741764Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:38:54.493142723Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:38:54.493343601Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:54.493578445Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:38:54.493602465Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:38:54.493617465Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:38:54.493647175Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:38:54.493658931Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:38:59.508371822Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:38:59.53782749Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:38:59.537934717Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:38:59.538978028Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:39:04.55829663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:39:04.586448023Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:39:04.586571586Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:39:04.588194951Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:39:04.588694147Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:04.589106825Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:04.589144036Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:39:04.589158793Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:39:04.589171825Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:39:04.589183469Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:39:09.606939025Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:39:09.635993883Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:39:09.636119521Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:39:09.637330768Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:39:09.637547539Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:09.637717556Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:09.637749785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:39:09.63776528Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:39:09.637795186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:39:09.637806986Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:39:14.657292825Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:39:14.685452787Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:39:14.685544749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:39:14.686682537Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:39:14.686952873Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:14.687160505Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:14.687196685Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:39:14.687213071Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:39:14.687224324Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:39:14.687580953Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:39:19.704924375Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:39:19.733633786Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:39:19.733726257Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:39:19.734889364Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:39:19.735111284Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:19.735315519Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:19.735341998Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:39:19.735356973Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:39:19.735371081Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:39:19.735382685Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:39:24.74927913Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:39:24.777670161Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:39:24.777770968Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:39:24.779339382Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:39:24.779891274Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:24.780320514Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:24.780355378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:39:24.780370583Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:39:24.78038454Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:39:24.780396136Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:39:29.797471902Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:39:29.82938577Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:39:29.829513316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:39:29.831206369Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:39:29.831681974Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:29.832144799Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:29.83240793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:39:29.832759235Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:39:29.832779233Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:39:29.832791883Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:39:34.849114548Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:39:34.876999973Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:39:34.877141466Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:39:34.87832902Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:39:34.878617796Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:34.878819588Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:34.87884953Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:39:34.878894609Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:39:34.878907228Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:39:34.87891797Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:39:39.896093663Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:39:39.924410525Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:39:39.924597567Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:39:39.925792537Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:39:39.926087305Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:44.948164873Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:39:44.978870834Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:39:44.978962347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:39:44.98053635Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:39:44.981140872Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:44.981572864Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:44.981772372Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:39:44.981795265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:39:44.981809331Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:39:44.981821111Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:39:49.999297471Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:39:50.031802935Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:39:50.031925734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:39:50.033263567Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:39:50.033567292Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:50.033805138Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:50.033859101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:39:50.033876775Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:39:50.033955317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:39:50.033968267Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:39:55.050300993Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:39:55.077328106Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:39:55.077420567Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:39:55.078834888Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:39:55.079044217Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:55.079189958Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:39:55.079223144Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:39:55.079264174Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:39:55.079300499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:39:55.079784646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:40:00.098881405Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:40:00.154427434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:40:00.154537258Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:40:00.155872639Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:40:00.156134537Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:00.156333775Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:00.156366086Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:40:00.156383512Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:40:00.156395051Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:40:00.156406671Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:40:05.198046803Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:40:05.247405859Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:40:05.247532262Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:40:05.249041861Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:40:05.249306982Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:05.249613794Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:05.249647646Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:40:05.249663685Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:40:05.249677837Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:40:05.249689581Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:40:10.265300948Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:40:10.294375196Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:40:10.294483661Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:40:10.295628364Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:40:10.295825316Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:10.295986823Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:10.296013906Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:40:10.296028911Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:40:10.296043066Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:40:10.29605493Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:40:15.317626736Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:40:15.346964958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:40:15.347080273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:40:15.348262552Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:40:15.349087431Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:15.349264627Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:15.349290132Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:40:15.349306292Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:40:15.349319362Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:40:15.349331436Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:40:20.368294092Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:40:20.397839996Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:40:20.39792992Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:40:20.400340054Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:40:20.400734846Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:20.401009261Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:20.401040261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:40:20.401055972Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:40:20.401068974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:40:20.401080605Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:40:25.417024431Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:40:25.447885675Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:40:25.448004481Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:40:25.449830072Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:40:25.450328987Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:25.450774488Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:25.450808003Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:40:25.450823717Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:40:25.450837059Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:40:25.450848896Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:40:30.466423883Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:40:30.49763912Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:40:30.49775099Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:40:30.499043167Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:40:30.499303423Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:30.499529612Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:30.499561069Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:40:30.49957587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:40:30.499590306Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:40:30.499600294Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:40:35.515504317Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:40:35.544071267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:40:35.544162224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:40:35.545354383Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:40:35.545732231Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:35.546016719Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:35.546048952Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:40:35.54606524Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:40:35.546078232Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:40:35.5460895Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:40:40.561543764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:40:40.590266229Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:40:40.590352823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:40:40.591794177Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:40:40.592279649Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:40.592809322Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:40.592841499Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:40:40.592857587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:40:40.592894142Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:40:40.592906437Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:40:45.609645641Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:40:45.63862532Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:40:45.638717175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:40:45.63984531Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:40:45.64008512Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:45.640320025Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:45.640348842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:40:45.640386942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:40:45.640400555Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:40:45.640487883Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:40:50.66032782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:40:50.686473586Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:40:50.686581909Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:40:50.687783742Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:40:50.688029035Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:50.688228671Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:50.688302924Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:40:50.688321121Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:40:50.688380286Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:40:50.688392761Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:40:55.708605007Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:40:55.736948174Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:40:55.737049378Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:40:55.73810829Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:40:55.738348692Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:55.738503481Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:40:55.738530763Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:40:55.738545478Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:40:55.738558741Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:40:55.738570343Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:41:00.75861758Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:41:00.788804444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:41:00.788932749Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:41:00.790482121Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:41:00.790980763Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:00.79146136Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:00.79162324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:41:00.791653853Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:41:00.791668371Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:41:00.791680046Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:41:05.810294927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:41:05.842214836Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:41:05.842349347Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:41:05.843492489Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:41:05.843689702Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:05.843845654Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:05.843869059Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:41:05.843883785Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:41:05.843897552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:41:05.843909508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:41:10.862516569Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:41:10.892300116Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:41:10.892535061Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:41:10.893649804Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:41:10.893896144Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:10.89409633Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:10.894137786Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:41:10.894154532Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:41:10.894168035Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:41:10.894250413Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:41:15.909653502Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:41:15.939880439Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:41:15.939991553Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:41:15.941282207Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:41:15.941480659Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:15.94162134Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:15.941662728Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:41:15.941677106Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:41:15.941690544Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:41:15.941702234Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:41:20.961516484Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:41:20.989789952Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:41:20.989907612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:41:20.991441349Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:41:20.991645199Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:20.991832628Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:20.991861764Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:41:20.991875966Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:41:20.991920533Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:41:20.991932307Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:41:26.009186823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:41:26.038710104Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:41:26.038839604Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:41:26.039994901Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:41:26.040166033Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:26.040339748Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:26.040370318Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:41:26.04038514Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:41:26.040540851Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:41:26.040555859Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:41:31.054035475Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:41:31.085546722Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:41:31.085659494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:41:31.086892289Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:41:31.087112579Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:31.087275312Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:31.087298894Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:41:31.0873143Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:41:31.087327474Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:41:31.087338868Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:41:36.109312732Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:41:36.138185363Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:41:36.13832649Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:41:36.139735472Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:41:36.139907643Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:36.140298542Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:36.140329856Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:41:36.14034423Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:41:36.140387006Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:41:36.140397903Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:41:41.157590533Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:41:41.18633613Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:41:41.186432565Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:41:41.188150415Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:41:41.188878327Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:41.189150032Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:41.189189268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:41:41.189203878Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:41:41.189215886Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:41:41.189226452Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:41:46.208291348Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:41:46.238337786Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:41:46.238442454Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:41:46.239781075Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:41:46.239958245Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:46.240117024Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:46.240162242Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:41:46.240178607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:41:46.240192057Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:41:46.240684763Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:41:51.259313503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:41:51.288068139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:41:51.288184218Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:41:51.289995549Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:41:51.290531458Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:51.290899442Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:51.29093428Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:41:51.2909829Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:41:51.291011646Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:41:51.291023703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:41:56.31028759Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:41:56.339358604Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:41:56.339450369Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:41:56.3405987Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:41:56.340785321Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:56.340946013Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:41:56.34096877Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:41:56.341021273Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:41:56.34103463Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:41:56.341046519Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:42:01.39710154Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:42:01.50669414Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:42:01.506826192Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:42:01.508163795Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:42:01.508816213Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:01.509254899Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:01.509292261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:42:01.509308936Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:42:01.509323755Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:42:01.509336264Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:42:06.547269829Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:42:06.576666994Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:42:06.576759157Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:42:06.577920419Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:42:06.578130372Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:06.578325538Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:06.578357357Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:42:06.578371753Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:42:06.578385302Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:42:06.578397139Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:42:11.596915414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:42:11.626738872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:42:11.626864534Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:42:11.629216803Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:42:11.629499289Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:11.629730688Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:11.629778178Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:42:11.629795337Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:42:11.629807293Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:42:11.630150158Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:42:16.64615625Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:42:16.674417549Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:42:16.674562713Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:42:16.675731615Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:42:16.67596823Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:16.676183775Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:16.676258791Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:42:16.676279801Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:42:16.676290975Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:42:16.676312778Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:42:21.694171942Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:42:21.72436994Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:42:21.724591745Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:42:21.725795269Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:42:21.726006188Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:21.726185962Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:21.726211582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:42:21.726226387Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:42:21.726253415Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:42:21.726265292Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:42:26.74768669Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:42:26.777076209Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:42:26.777180178Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:42:26.778226726Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:42:26.778496068Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:26.778693907Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:26.778722607Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:42:26.778738468Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:42:26.77875078Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:42:26.778762748Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:42:31.791533837Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:42:31.820973156Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:42:31.821066684Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:42:31.822908665Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:42:31.823394723Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:31.823542024Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:31.823571098Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:42:31.823585447Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:42:31.82359998Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:42:31.823612396Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:42:36.839394305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:42:36.871812686Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:42:36.871913793Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:42:36.8731464Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:42:36.873420761Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:36.873694294Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:36.873740788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:42:36.873757593Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:42:36.873772436Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:42:36.874127437Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:42:41.89027375Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:42:41.917897131Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:42:41.917987918Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:42:41.919115546Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:42:41.919360111Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:41.919510532Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:41.919534478Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:42:41.919550331Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:42:41.919563421Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:42:41.919575444Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:42:46.93818428Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:42:46.969145035Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:42:46.969256799Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:42:46.97031636Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:42:46.970561002Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:46.970748257Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:46.970787591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:42:46.970802785Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:42:46.97081473Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:42:46.971226532Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:42:51.98541916Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:42:52.015372294Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:42:52.015492224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:42:52.017000198Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:42:52.017206755Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:57.035295871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:42:57.066964531Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:42:57.06707549Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:42:57.069641845Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:42:57.070125678Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:57.070378988Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:42:57.070409229Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:42:57.070425322Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:42:57.070439082Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:42:57.070450798Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:43:02.08928274Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:43:02.118891573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:43:02.118992158Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:43:02.121663933Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:43:02.122310338Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:02.12282052Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:02.122943608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:43:02.122969562Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:43:02.122983871Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:43:02.122996299Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:43:07.136162933Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:43:07.166761498Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:43:07.166855408Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:43:07.168012717Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:43:07.168291166Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:07.168612997Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:07.168656752Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:43:07.168673797Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:43:07.168688644Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:43:07.169103483Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:43:12.189813837Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:43:12.218883675Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:43:12.218989818Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:43:12.220078712Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:43:12.220368386Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:12.220705756Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:12.220747166Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:43:12.220763777Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:43:12.220777526Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:43:12.221111369Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:43:17.236161666Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:43:17.266428584Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:43:17.266569629Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:43:22.285409552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:43:22.313305815Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:43:22.313425275Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:43:22.314679791Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:43:22.314934155Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:22.315136301Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:22.315175848Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:43:22.315190453Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:43:22.315201788Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:43:22.315566601Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:43:27.331769405Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:43:27.362389978Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:43:27.362512727Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:43:27.36404676Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:43:27.364506006Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:27.364677254Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:27.364702275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:43:27.364717118Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:43:27.364755552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:43:27.364767893Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:43:32.386003463Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:43:32.414425144Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:43:32.41450823Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:43:32.415655281Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:43:32.415917753Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:32.416131745Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:32.416169614Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:43:32.416184267Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:43:32.416196042Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:43:32.41620614Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:43:37.430997202Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:43:37.458766986Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:43:37.458881894Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:43:37.459911759Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:43:37.46013652Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:37.460353714Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:37.460533682Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:43:37.460552252Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:43:37.460565535Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:43:37.460587161Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:43:42.478292337Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:43:42.507875694Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:43:42.507978173Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:43:42.50915952Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:43:42.50939749Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:42.509542469Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:42.509565994Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:43:42.509581147Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:43:42.509595555Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:43:42.509607303Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:43:47.522353479Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:43:47.551824868Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:43:47.55193197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:43:47.553099366Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:43:47.553292193Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:47.553443661Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:47.553467676Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:43:47.553482481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:43:47.553496698Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:43:47.553508691Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:43:52.568647691Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:43:52.599694379Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:43:52.599822762Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:43:52.602975065Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:43:52.60317555Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:52.603393598Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:52.603438112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:43:52.603453851Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:43:52.603517854Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:43:52.603529892Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:43:57.619584127Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:43:57.646482084Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:43:57.64659175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:43:57.647611175Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:43:57.647795915Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:57.647957167Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:43:57.647996974Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:43:57.648012186Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:43:57.648025549Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:43:57.648466857Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:44:02.665300956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:44:02.693160083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:44:02.693286431Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:44:02.694425518Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:44:02.694658049Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:02.694861576Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:02.694891759Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:44:02.69490627Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:44:02.694917086Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:44:02.694926608Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:44:07.712175512Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:44:07.740107373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:44:07.740218868Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:44:07.741474565Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:44:07.74176386Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:07.742016494Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:07.742045323Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:44:07.742060352Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:44:07.742074474Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:44:07.742086058Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:44:12.763582763Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:44:12.792694636Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:44:12.79278793Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:44:12.796008189Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:44:12.79621077Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:12.796514986Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:12.79654831Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:44:12.796563287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:44:12.796577053Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:44:12.796588693Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:44:17.809935444Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:44:17.83926344Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:44:17.839347856Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:44:17.841083003Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:44:17.841888878Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:17.842292568Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:17.842326143Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:44:17.842341718Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:44:17.842355802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:44:17.842367375Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:44:22.859612412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:44:22.88983158Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:44:22.889946158Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:44:22.890993014Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:44:22.891210229Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:22.891387224Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:22.891427936Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:44:22.891443039Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:44:22.89145662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:44:22.89186621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:44:27.908165232Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:44:27.938669724Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:44:27.93878183Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:44:27.939912789Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:44:27.940142276Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:27.940341009Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:27.940371243Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:44:27.940466474Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:44:27.940479709Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:44:27.940490811Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:44:32.962617017Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:44:32.993165453Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:44:32.993546961Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:44:32.994706133Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:44:32.994997405Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:32.995152293Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:32.995181036Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:44:32.995195322Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:44:32.995246266Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:44:32.995255973Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:44:38.012295917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:44:38.041019062Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:44:38.041129826Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:44:38.042217903Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:44:38.042427038Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:38.042576419Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:38.042601499Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:44:38.042616732Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:44:38.042639402Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:44:38.042651722Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:44:43.062623893Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:44:43.092843493Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:44:43.09297269Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:44:48.109213374Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:44:48.137468577Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:44:48.137579993Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:44:48.140322296Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:44:48.140946547Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:48.14110307Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:48.141132778Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:44:48.141147135Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:44:48.141159869Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:44:48.141172056Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:44:53.156960703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:44:53.18818337Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:44:53.188318293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:44:53.189562164Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:44:53.189832563Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:53.190035669Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:53.190073989Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:44:53.190087887Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:44:53.190098628Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:44:53.190107128Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:44:58.207023651Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:44:58.233640624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:44:58.233767877Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:44:58.23598365Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:44:58.236578859Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:58.2369726Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:44:58.237010046Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:44:58.237025644Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:44:58.237040057Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:44:58.23705161Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:45:03.263424538Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:45:03.315739117Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:45:03.315859318Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:45:03.318039169Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:45:03.318618495Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:03.319063171Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:03.319194827Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:45:03.319213496Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:45:03.319228246Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:45:03.319690144Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:45:08.337281012Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:45:08.368257819Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:45:08.368371443Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:45:08.371032288Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:45:08.37143703Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:08.371621721Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:08.371650393Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:45:08.371666373Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:45:08.371678132Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:45:08.371688579Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:45:13.390299754Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:45:13.418716063Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:45:13.418823861Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:45:13.421554174Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:45:13.421775105Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:13.422187365Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:13.422224336Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:45:13.422250556Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:45:13.422303919Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:45:13.422316291Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:45:18.437107869Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:45:18.469093267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:45:18.469192977Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:45:18.471034645Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:45:18.471426328Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:18.471693194Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:18.471745516Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:45:18.471761308Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:45:18.471773766Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:45:18.472119543Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:45:23.490285261Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:45:23.518439915Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:45:23.518551884Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:45:23.520188075Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:45:23.520716003Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:23.520969642Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:23.521001207Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:45:23.521036952Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:45:23.521075159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:45:23.521105536Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:45:28.535917435Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:45:28.565900957Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:45:28.566033249Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:45:28.56794861Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:45:28.568190359Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:28.568537074Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:28.568570546Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:45:28.568611136Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:45:28.568626169Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:45:28.568636908Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:45:33.583534586Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:45:33.616855003Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:45:33.616959356Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:45:33.618063504Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:45:33.618248588Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:33.618403585Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:33.618427178Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:45:33.618441937Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:45:33.618455461Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:45:33.618467708Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:45:38.630612632Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:45:38.659763112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:45:38.659872721Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:45:38.662415912Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:45:38.66261343Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:38.662918403Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:38.662954058Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:45:38.662979729Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:45:38.662994079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:45:38.663005759Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:45:43.684749532Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:45:43.714195873Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:45:43.714300325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:45:43.715490276Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:45:43.715696572Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:43.715884012Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:43.71591116Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:45:43.715926715Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:45:43.715940174Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:45:43.715951536Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:45:48.73122364Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:45:48.760272422Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:45:48.760358933Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:45:48.761508456Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:45:48.761832112Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:48.76206514Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:48.762092454Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:45:48.762107936Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:45:48.762548917Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:45:48.762567559Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:45:53.780314708Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:45:53.80866191Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:45:53.808772117Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:45:53.809869911Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:45:53.810031437Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:53.810166764Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:53.810189301Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:45:53.810204369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:45:53.810268692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:45:53.810281862Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:45:58.827125255Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:45:58.856052454Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:45:58.856173322Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:45:58.857306612Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:45:58.857502652Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:58.857661912Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:45:58.857700162Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:45:58.857716072Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:45:58.857729347Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:45:58.858077322Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:46:03.880443885Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:46:03.909536664Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:46:03.909640937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:46:03.910708212Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:46:03.910899928Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:03.911043395Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:03.911083181Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:46:03.911098187Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:46:03.911165583Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:46:03.911177575Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:46:08.927639857Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:46:08.954022426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:46:08.954147952Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:46:08.955261374Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:46:08.955547476Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:08.955765365Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:08.955810662Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:46:08.955828103Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:46:08.955842526Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:46:08.956228631Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:46:13.979284769Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:46:14.007975361Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:46:14.008091808Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:46:14.010552628Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:46:14.010990445Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:14.011536893Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:14.011572467Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:46:14.011588084Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:46:14.01160136Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:46:14.01161428Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:46:19.031334233Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:46:19.062572196Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:46:19.062687331Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:46:19.063759643Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:46:19.063960351Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:19.06412311Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:19.064152535Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:46:19.064167575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:46:19.064203856Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:46:19.064215422Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:46:24.085980148Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:46:24.115386654Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:46:24.115505831Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:46:24.118103882Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:46:24.118413818Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:24.118683953Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:24.118720282Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:46:24.118736529Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:46:24.118774505Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:46:24.118786487Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:46:29.137608975Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:46:29.168102275Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:46:29.168214413Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:46:29.16937399Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:46:29.169638371Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:29.169887767Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:29.16991606Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:46:29.169929724Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:46:29.169940813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:46:29.169950087Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:46:34.191569243Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:46:34.220631308Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:46:34.220768393Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:46:34.224603116Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:46:34.22485168Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:34.225061732Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:34.225092306Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:46:34.225106577Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:46:34.225118449Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:46:34.225129577Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:46:39.242424182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:46:39.272037712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:46:39.272148512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:46:39.273354729Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:46:39.273617889Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:39.273834311Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:39.273875331Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:46:39.273906973Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:46:39.274067545Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:46:39.274082705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:46:44.290512963Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:46:44.321441863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:46:44.321535799Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:46:44.322911544Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:46:44.323443977Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:44.323934206Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:44.324031424Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:46:44.324070029Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:46:44.324083185Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:46:44.324094882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:46:49.340162652Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:46:49.368943048Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:46:49.369032874Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:46:49.371094543Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:46:49.371579864Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:49.371724243Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:49.371746825Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:46:49.371761901Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:46:49.37177471Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:46:49.371786286Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:46:54.389932844Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:46:54.418593149Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:46:54.418691507Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:46:54.420320512Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:46:54.420828685Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:54.421306887Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:54.421355836Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:46:54.421371204Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:46:54.421382726Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:46:54.421392832Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:46:59.434684199Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:46:59.463779778Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:46:59.4639024Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:46:59.46791503Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:46:59.468111833Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:59.468308239Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:46:59.4683395Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:46:59.468355308Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:46:59.468466684Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:46:59.468478979Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:47:04.488050561Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:47:04.518186904Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:47:04.518289142Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:47:04.519416109Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:47:04.519683209Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:04.519856781Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:04.519884628Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:47:04.51994162Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:47:04.519967081Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:47:04.519979507Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:47:09.538535077Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:47:09.569023041Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:47:09.569132266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:47:09.57089528Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:47:09.571087682Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:09.571291653Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:09.57132315Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:47:09.571337392Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:47:09.571349994Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:47:09.571360546Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:47:14.589176712Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:47:14.619937675Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:47:14.620087953Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:47:14.621554847Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:47:14.621857408Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:14.622082945Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:14.622115383Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:47:14.622130532Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:47:19.637801275Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:47:19.669491743Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:47:19.669607561Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:47:19.672058716Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:47:19.672706382Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:19.672871466Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:19.67290152Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:47:19.672916925Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:47:19.672929811Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:47:19.67294172Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:47:24.687204728Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:47:24.716175987Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:47:24.716328003Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:47:24.719020546Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:47:24.719329818Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:24.719533333Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:24.719586252Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:47:24.719600915Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:47:24.719614657Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:47:24.719997276Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:47:29.736801103Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:47:29.767424768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:47:29.767522551Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:47:29.769468876Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:47:29.770096734Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:29.770677343Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:29.770794649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:47:29.77081291Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:47:29.770826715Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:47:29.770838962Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:47:34.784870968Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:47:34.813694022Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:47:34.813801008Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:47:34.814811618Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:47:34.814982854Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:34.815116545Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:34.815144622Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:47:34.815174141Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:47:34.815188451Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:47:34.815199826Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:47:39.831765387Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:47:39.860079659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:47:39.860195266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:47:39.862183956Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:47:39.862647217Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:39.863052856Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:39.863086088Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:47:39.863100985Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:47:39.8631142Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:47:39.863125598Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:47:44.878182406Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:47:44.909001739Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:47:44.909118787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:47:44.910261055Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:47:44.910523698Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:44.910734301Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:44.910776194Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:47:44.910793043Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:47:44.910847136Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:47:44.910858224Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:47:49.930226024Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:47:49.961073144Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:47:49.961163446Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:47:49.962187142Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:47:49.962447367Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:49.962659693Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:49.962714817Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:47:49.962732327Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:47:49.962812852Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:47:54.984516113Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:47:55.016348255Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:47:55.016544148Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:47:55.019218531Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:47:55.019548883Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:55.019786042Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:47:55.019827239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:47:55.019918541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:47:55.019934675Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:47:55.019957847Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:48:00.087260917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:48:00.163848093Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:48:00.163950365Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:48:00.165899063Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:48:00.166136028Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:00.166369045Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:00.166424764Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:48:00.166440373Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:48:00.166453168Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:48:00.16646273Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:48:05.183024013Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:48:05.213599968Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:48:05.213701567Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:48:05.215200252Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:48:05.215710964Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:05.216616236Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:05.216652882Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:48:05.216668874Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:48:05.216680496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:48:05.21669112Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:48:10.232295323Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:48:10.263079411Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:48:10.263181864Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:48:10.264308248Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:48:10.264756367Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:10.264975206Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:10.265004056Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:48:10.265018829Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:48:10.265031Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:48:10.265042351Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:48:15.28639808Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:48:15.316573222Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:48:15.31667467Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:48:15.317878274Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:48:15.318088981Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:15.318298169Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:15.31832741Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:48:15.318342896Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:48:15.318356513Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:48:15.318368042Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:48:20.33830465Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:48:20.36810505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:48:20.368217847Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:48:20.370008072Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:48:20.370616439Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:20.37099772Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:20.371035117Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:48:20.37105049Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:48:20.371064161Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:48:20.371075825Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:48:25.390677604Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:48:25.419388147Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:48:25.419520123Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:48:25.421132538Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:48:25.42164799Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:25.421845313Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:25.421873472Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:48:25.42188789Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:48:25.421899806Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:48:25.421910613Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:48:30.439288523Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:48:30.466051002Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:48:30.466139077Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:48:30.467181749Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:48:30.46742764Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:30.467587795Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:30.467629672Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:48:30.467645607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:48:30.467658766Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:48:30.468069339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:48:35.484723559Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:48:35.513895706Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:48:35.51400086Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:48:35.51610862Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:48:35.516497428Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:35.51675237Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:35.516782297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:48:35.516797501Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:48:35.516822307Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:48:35.516832941Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:48:40.535556923Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:48:40.565128319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:48:40.565229534Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:48:40.566959279Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:48:40.567508244Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:40.567969044Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:45.583295815Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:48:45.613757905Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:48:45.613844429Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:48:45.614915804Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:48:45.61514241Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:45.615374824Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:45.615406163Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:48:45.615419968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:48:45.615432499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:48:45.615442389Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:48:50.631301773Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:48:50.660697603Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:48:50.660821935Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:48:50.661961206Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:48:50.662156357Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:50.662330474Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:50.662371979Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:48:50.662387734Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:48:50.662400391Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:48:50.662725753Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:48:55.684275479Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:48:55.712047015Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:48:55.71214397Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:48:55.713366977Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:48:55.713623673Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:55.713830332Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:48:55.713869427Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:48:55.71388349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:48:55.713894855Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:48:55.713905593Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:49:00.727500238Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:49:00.778607456Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:49:00.778702242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:49:00.779941217Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:49:00.780220276Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:00.780490764Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:00.780523913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:49:00.780541502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:49:00.780555739Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:49:00.780567615Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:49:05.796615918Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:49:05.827786804Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:49:05.827892917Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:49:05.829880341Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:49:05.830086703Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:05.830279067Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:05.830318962Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:49:05.830333979Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:49:05.830344831Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:49:05.830354982Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:49:10.847284724Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:49:10.87452556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:49:10.874615116Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:49:10.876099385Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:49:10.876760181Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:10.876948713Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:10.876973781Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:49:10.876989734Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:49:10.87700265Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:49:10.877014587Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:49:15.894189627Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:49:15.92475139Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:49:15.924862512Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:49:15.925914419Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:49:15.926100033Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:15.926267163Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:15.926290521Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:49:15.926333112Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:49:15.926346753Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:49:15.926358108Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:49:20.942261563Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:49:20.971412944Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:49:20.971506383Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:49:20.972887276Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:49:20.973125255Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:20.9733804Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:20.973450491Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:49:20.973466017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:49:20.973479983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:49:20.973492034Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:49:25.991299848Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:49:26.02157234Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:49:26.021683287Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:49:26.023048857Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:49:26.02353482Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:26.024002996Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:26.024038889Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:49:26.024054134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:49:26.024068384Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:49:26.02407867Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:49:31.039910818Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:49:31.0697034Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:49:31.069827993Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:49:31.071230349Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:49:31.07153004Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:31.0717435Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:31.071772495Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:49:31.071787224Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:49:31.071800554Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:49:31.071811932Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:49:36.09214972Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:49:36.121657113Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:49:36.121783998Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:49:36.123034036Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:49:36.123267693Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:36.123480678Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:36.123518743Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:49:36.123534349Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:49:36.123548108Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:49:36.123932075Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:49:41.139231685Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:49:41.167677262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:49:41.167795517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:49:41.170291467Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:49:41.170822997Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:41.171293455Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:41.171535638Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:49:41.171556192Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:49:41.171569644Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:49:41.17158195Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:49:46.186652204Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:49:46.216618846Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:49:46.216716211Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:49:46.218091132Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:49:46.218332582Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:46.21850742Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:46.218548792Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:49:46.218575225Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:49:46.21891154Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:49:46.218926533Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:49:51.2402776Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:49:51.26907339Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:49:51.269175017Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:49:51.271939468Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:49:51.272158554Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:51.272392738Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:51.272546588Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:49:51.272562119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:49:51.272575662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:49:51.272587796Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:49:56.296276788Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:49:56.325644709Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:49:56.325752056Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:49:56.327660305Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:49:56.328262708Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:56.328976894Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:49:56.329014531Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:49:56.329030773Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:49:56.329044825Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:49:56.329056777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:50:01.358446748Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:50:01.496274608Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:50:01.496458104Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:50:01.498176241Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:50:01.498459588Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:01.498633661Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:01.498674237Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:50:01.498689257Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:50:01.498701603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:50:01.4987112Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:50:06.532470641Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:50:06.560574811Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:50:06.560675837Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:50:06.562077792Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:50:06.562648175Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:06.563040171Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:06.563073479Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:50:06.563087617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:50:06.563100484Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:50:06.563110544Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:50:11.578857619Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:50:11.607304109Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:50:11.607406683Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:50:11.60918972Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:50:16.627524658Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:50:16.657502889Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:50:16.657596656Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:50:16.659203692Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:50:16.659807333Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:16.66034238Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:16.66055116Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:50:16.660571759Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:50:16.660585746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:50:16.660597571Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:50:21.676218448Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:50:21.706560624Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:50:21.707145839Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:50:21.711007487Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:50:21.711252126Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:21.711432761Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:21.711464187Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:50:21.711479277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:50:21.711515287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:50:21.711527373Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:50:26.730314222Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:50:26.758880786Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:50:26.758992162Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:50:26.760349117Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:50:26.760712994Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:26.761013393Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:26.761075145Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:50:26.761090887Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:50:26.761105416Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:50:26.761505364Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:50:31.778523504Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:50:31.807606417Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:50:31.807696945Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:50:31.808808886Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:50:31.809011847Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:31.809159559Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:31.809221805Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:50:31.80926271Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:50:31.809275336Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:50:31.809285082Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:50:36.829292969Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:50:36.858756663Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:50:36.858868884Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:50:36.859885718Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:50:36.860112826Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:36.860362177Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:36.860392756Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:50:36.860493961Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:50:36.860510594Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:50:36.860522274Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:50:41.878302757Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:50:41.908346561Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:50:41.908512745Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:50:41.910007372Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:50:41.910632595Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:41.911045961Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:41.911079267Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:50:41.911094623Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:50:41.911108174Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:50:41.911118311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:50:46.929605821Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:50:46.959219193Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:50:46.95934771Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:50:46.961216581Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:50:46.96174958Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:46.962182412Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:46.962260919Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:50:46.962278296Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:50:46.962292412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:50:46.962304499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:50:51.97656299Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:50:52.007627751Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:50:52.007730055Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:50:52.009035581Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:50:52.009220321Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:52.00940221Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:52.009426453Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:50:52.009441282Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:50:52.00945585Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:50:52.009467683Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:50:57.031293679Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:50:57.059469538Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:50:57.059565144Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:50:57.060894011Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:50:57.061132908Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:57.061356731Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:50:57.061395429Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:50:57.061411621Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:50:57.061422619Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:50:57.061432753Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:51:02.088213575Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:51:02.127824636Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:51:02.127937157Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:51:02.129883385Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:51:02.130183105Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:02.130581252Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:02.130621556Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:51:02.130672203Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:51:02.13070512Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:51:02.130717507Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:51:07.149280839Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:51:07.179162268Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:51:07.17929468Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:51:07.180392585Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:51:07.180702596Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:07.18086214Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:07.180896604Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:51:07.180913154Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:51:07.180924104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:51:07.180934663Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:51:12.196594597Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:51:12.225672034Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:51:12.225790357Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:51:12.226902859Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:51:12.227153454Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:12.227384527Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:12.22741348Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:51:12.227427848Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:51:12.227440005Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:51:12.227451551Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:51:17.246021165Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:51:17.27613376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:51:17.276221242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:51:17.277426699Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:51:17.27763153Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:17.277800003Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:17.277839338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:51:17.277854597Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:51:17.277868749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:51:17.278210586Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:51:22.295371796Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:51:22.327229642Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:51:22.327338009Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:51:22.328401043Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:51:22.328735156Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:22.328886101Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:22.328909397Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:51:22.32895086Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:51:22.328964771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:51:22.32897717Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:51:27.345293194Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:51:27.374453315Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:51:27.374555953Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:51:27.377483359Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:51:27.377719368Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:27.37788324Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:27.37790929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:51:27.37792488Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:51:27.377937969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:51:27.377949856Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:51:32.394914124Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:51:32.425120485Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:51:32.425212673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:51:32.427094562Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:51:32.427346568Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:32.427528774Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:32.427569643Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:51:32.427586043Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:51:32.427597572Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:51:32.428019457Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:51:37.443195024Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:51:37.471674981Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:51:37.471767344Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:51:37.474056567Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:51:37.474625212Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:37.475004134Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:37.475041605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:51:37.475057301Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:51:37.475071945Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:51:37.475083443Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:51:42.492716106Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:51:42.523413781Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:51:42.523519382Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:51:42.524627189Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:51:42.524802672Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:42.524938892Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:42.524961089Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:51:42.524975435Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:51:42.52498882Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:51:42.525000891Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:51:47.541459423Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:51:47.56858003Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:51:47.568699714Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:51:47.569869114Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:51:47.570103214Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:47.570322493Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:47.570360392Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:51:47.570376404Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:51:47.570389648Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:51:47.570770058Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:51:52.592478109Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:51:52.621990118Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:51:52.622116456Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:51:52.623634791Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:51:52.624028634Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:52.624687604Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:52.62492668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:51:52.624948892Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:51:52.624962631Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:51:52.624974611Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:51:57.637193048Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:51:57.668371705Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:51:57.668548943Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:51:57.670013061Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:51:57.670551478Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:57.671015068Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:51:57.671269802Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:51:57.671439291Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:51:57.671455871Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:51:57.671467684Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:52:02.689509734Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:52:02.721127599Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:52:02.721224599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:52:02.722761104Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:52:02.723304474Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:02.723759774Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:02.72394224Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:52:02.72396502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:52:02.723980302Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:52:02.72399209Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:52:07.740291907Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:52:07.768348315Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:52:07.768555257Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:52:07.769554744Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:52:07.769759293Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:07.769903258Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:07.769947411Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:52:07.769963006Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:52:07.769975658Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:52:07.769987221Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:52:12.786481533Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:52:12.816469734Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:52:12.816601934Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:52:12.817799301Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:52:12.817984046Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:12.818125912Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:12.818149685Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:52:12.818164218Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:52:12.818177947Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:52:12.818189736Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:52:17.832286182Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:52:17.862414025Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:52:17.862520916Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:52:17.863853797Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:52:17.864092967Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:17.864302144Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:17.864341287Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:52:17.864357568Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:52:17.864370738Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:52:17.86502078Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:52:22.885923506Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:52:22.917565295Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:52:22.917655262Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:52:22.91878368Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:52:22.91900483Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:22.91919313Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:22.919219177Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:52:22.919246685Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:52:22.919261246Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:52:22.919273167Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:52:27.934274207Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:52:27.961843951Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:52:27.961939335Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:52:27.962938416Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:52:27.963147702Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:27.963330893Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:27.963359215Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:52:27.963373891Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:52:27.963387517Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:52:27.963399383Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:52:32.980847992Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:52:33.018125351Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:52:33.018218898Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:52:33.0198068Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:52:33.020143869Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:33.020510295Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:33.02054322Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:52:33.020559516Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:52:33.020573799Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:52:33.020585784Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:52:38.03627102Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:52:38.067018471Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:52:38.067114158Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:52:38.068110466Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:52:38.068310939Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:38.068612769Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:38.068657013Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:52:38.068673404Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:52:38.068686919Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:52:38.069016958Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:52:43.088303112Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:52:43.116662001Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:52:43.116776917Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:52:43.117904113Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:52:43.118137651Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:43.118345039Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:43.118374552Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:52:43.118388236Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:52:43.1183998Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:52:43.118410135Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:52:48.137295536Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:52:48.165477193Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:52:48.16557593Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:52:48.16790251Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:52:48.168118268Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:48.168345978Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:48.16837841Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:52:48.168393048Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:52:48.168405987Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:52:48.168481673Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:52:53.189329863Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:52:53.219378693Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:52:53.219494999Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:52:53.22078586Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:52:53.22105448Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:53.221205864Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:53.221229973Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:52:53.221257882Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:52:53.221292071Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:52:53.221301862Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:52:58.236692764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:52:58.264942968Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:52:58.265055904Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:52:58.266165442Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:52:58.26643886Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:58.266644228Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:52:58.266682779Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:52:58.266696468Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:52:58.266709033Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:52:58.266719041Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:53:03.285471907Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:53:03.315349373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:53:03.315442052Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:53:03.317167791Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:53:03.3175721Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:03.317892161Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:03.31792469Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:53:03.317948299Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:53:03.317962431Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:53:03.317974488Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:53:08.333523732Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:53:08.361033611Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:53:08.361123619Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:53:08.362123771Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:53:08.362339493Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:08.362492067Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:08.36251548Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:53:08.362530427Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:53:08.362542968Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:53:08.362554758Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:53:13.377201742Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:53:13.40669094Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:53:13.40680202Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:53:13.40787456Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:53:13.408064388Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:13.408220405Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:13.408256579Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:53:13.408272659Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:53:13.408285911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:53:13.408297176Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:53:18.423459707Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:53:18.452866107Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:53:18.452982207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:53:18.455259833Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:53:18.455489088Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:18.455723491Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:18.455771417Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:53:18.455788735Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:53:18.455802175Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:53:18.456201761Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:53:23.477936986Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:53:23.506543287Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:53:23.506665036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:53:23.50773218Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:53:23.507975183Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:23.508188398Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:23.508219064Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:53:23.508250023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:53:23.508320503Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:53:23.508332248Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:53:28.522648448Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:53:28.551708119Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:53:28.551820942Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:53:28.553248999Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:53:28.553738134Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:28.554223356Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:28.554531105Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:53:28.554552333Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:53:28.554565396Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:53:28.55457751Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:53:33.574291606Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:53:33.602377548Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:53:33.602471634Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:53:33.603685986Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:53:33.603957798Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:33.604308515Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:33.604400231Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:53:33.604577818Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:53:33.604597089Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:53:33.604608469Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:53:38.620408065Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:53:38.650509854Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:53:38.650614783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:53:38.651654577Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:53:38.651838324Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:38.651984331Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:38.65200747Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:53:38.652022175Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:53:38.65203514Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:53:38.652046737Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:53:43.670600138Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:53:43.699162933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:53:43.699282324Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:53:43.700344707Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:53:43.700692701Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:43.700856118Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:43.700895713Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:53:43.700910532Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:53:43.700923489Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:53:43.701253742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:53:48.717459155Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:53:48.746117449Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:53:48.746205692Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:53:48.747290476Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:53:48.747480466Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:48.747621404Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:48.747662184Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:53:48.747677653Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:53:48.747727862Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:53:48.747740055Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:53:53.771737493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:53:53.801621969Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:53:53.801744917Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:53:53.802872118Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:53:53.803066092Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:53.80321397Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:53.803257451Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:53:53.803273118Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:53:53.803285633Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:53:53.803296988Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:53:58.816926977Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:53:58.848766884Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:53:58.848879684Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:53:58.851210781Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:53:58.851743929Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:58.851937015Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:53:58.851967581Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:53:58.852000575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:53:58.852015502Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:53:58.852027113Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:54:03.871639794Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:54:03.900409393Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:54:03.900603285Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:54:03.901743975Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:54:03.901932818Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:03.9020697Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:03.902092247Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:54:03.902107656Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:54:03.902121169Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:54:03.902132847Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:54:08.91813219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:54:08.946074806Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:54:08.946175213Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:54:08.947527444Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:54:08.947723075Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:08.947906741Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:08.947942937Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:54:08.947958108Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:54:08.947968781Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:54:08.947977527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:54:13.967887633Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:54:13.998492955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:54:13.998602864Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:54:13.999943183Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:54:14.000529952Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:14.001046958Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:14.00110802Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:54:14.001125404Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:54:14.001149461Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:54:14.00116096Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:54:19.015307089Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:54:19.045837551Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:54:19.045942174Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:54:19.047001749Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:54:19.04717901Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:19.047352049Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:19.047377504Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:54:19.047413461Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:54:24.066789146Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:54:24.094491291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:54:24.094586366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:54:24.096316547Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:54:24.096625522Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:24.096806084Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:24.096839369Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:54:24.096855229Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:54:24.096894584Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:54:24.096906381Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:54:29.112784671Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:54:29.142408934Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:54:29.142517547Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:54:29.143546301Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:54:29.14379168Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:29.143969592Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:29.143998049Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:54:29.144012987Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:54:29.144024118Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:54:29.144034282Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:54:34.163080228Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:54:34.194780262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:54:34.194891261Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:54:34.196784499Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:54:34.197261064Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:34.197715209Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:34.197750701Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:54:34.197765702Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:54:34.197779178Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:54:34.197791243Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:54:39.213328413Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:54:39.244175477Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:54:39.244290515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:54:39.245526135Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:54:39.245737331Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:39.245902243Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:39.245932655Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:54:39.245946083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:54:39.245956818Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:54:39.245966418Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:54:44.262718178Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:54:44.29379709Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:54:44.293905471Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:54:44.294953977Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:54:44.295169882Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:44.295388527Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:44.295416572Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:54:44.295431836Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:54:44.29544504Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:54:44.295456851Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:54:49.31428446Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:54:49.344174874Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:54:49.344311043Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:54:49.345528622Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:54:49.345739974Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:49.345897361Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:49.345920607Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:54:49.345935411Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:54:49.34594829Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:54:49.345959942Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:54:54.36242479Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:54:54.392040645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:54:54.392139842Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:54:54.393763583Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:54:54.394222884Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:54.394638941Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:54.394673036Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:54:54.394687446Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:54:54.394699979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:54:54.394711009Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:54:59.412275626Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:54:59.442945671Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:54:59.443053564Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:54:59.444175679Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:54:59.444588896Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:59.444849247Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:54:59.444889216Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:54:59.444904177Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:54:59.444915657Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:54:59.445274998Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:55:04.464369079Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:55:04.493687878Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:55:04.493800224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:55:04.495313073Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:55:04.495624692Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:04.495770241Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:04.495799331Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:55:04.495813637Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:55:04.495826475Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:55:04.49583794Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:55:09.513293878Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:55:09.539835995Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:55:09.53997215Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:55:09.541931035Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:55:09.542117955Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:09.542307602Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:09.542335063Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:55:09.542349605Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:55:09.542371029Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:55:09.54238144Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:55:14.558032193Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:55:14.588942474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:55:14.589050366Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:55:14.590192351Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:55:14.590519114Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:14.590727557Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:14.590769869Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:55:14.590787129Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:55:14.5908008Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:55:14.591291943Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:55:19.607009031Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:55:19.638707406Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:55:19.638819235Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:55:19.640367713Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:55:19.640929706Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:19.641095967Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:19.641125029Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:55:19.64114089Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:55:19.641153845Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:55:19.641166094Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:55:24.661304299Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:55:24.691185122Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:55:24.691325253Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:55:24.693194104Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:55:24.693736031Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:24.694206837Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:24.694456279Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:55:24.69447617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:55:24.694508151Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:55:24.69496043Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:55:29.70907971Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:55:29.738186107Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:55:29.738302756Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:55:29.741096583Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:55:29.741323512Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:29.741524613Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:29.741564438Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:55:29.741581847Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:55:29.741643373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:55:29.741652929Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:55:34.756102133Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:55:34.784262058Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:55:34.784370505Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:55:34.785842649Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:55:34.786347926Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:34.786758686Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:34.786794984Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:55:34.786809575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:55:34.786822312Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:55:34.786834083Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:55:39.804429414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:55:39.834496789Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:55:39.834621369Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:55:39.837809308Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:55:39.838218374Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:39.838639395Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:39.838672312Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:55:39.838687093Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:55:39.838725775Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:55:39.838737393Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:55:44.857176901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:55:44.886157858Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:55:44.886259554Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:55:44.88731338Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:55:44.887538991Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:44.887747142Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:44.887789986Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:55:44.887806526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:55:44.887818732Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:55:49.907050893Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:55:49.93791291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:55:49.938005361Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:55:49.939327947Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:55:49.939553548Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:49.939811708Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:49.93983604Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:55:49.939851369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:55:49.939879341Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:55:49.939891089Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:55:54.956283851Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:55:54.986091547Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:55:54.986210108Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:55:54.987249652Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:55:54.987467278Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:54.987621335Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:55:54.987662284Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:55:54.987678733Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:55:54.987692833Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:55:54.988148499Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:56:00.020676601Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:56:00.097660919Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:56:00.097772993Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:56:00.099269652Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:56:00.099509622Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:00.099684568Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:00.099718911Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:56:00.099733691Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:56:00.099745344Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:56:00.099754621Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:56:05.119761653Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:56:05.149263574Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:56:05.149386293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:56:10.17028914Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:56:10.198641469Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:56:10.198762777Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:56:10.2004009Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:56:10.201030792Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:10.201544404Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:10.201673541Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:56:10.201710508Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:56:10.20172358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:56:10.201744357Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:56:15.218381858Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:56:15.245986346Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:56:15.246101007Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:56:15.247133784Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:56:15.247350077Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:15.247512273Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:15.247535699Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:56:15.24755042Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:56:15.24756331Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:56:15.247574878Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:56:20.265866053Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:56:20.295589902Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:56:20.295677768Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:56:20.297550994Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:56:20.298030392Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:20.298429734Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:20.298464076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:56:20.298511502Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:56:20.298525292Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:56:20.298536844Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:56:25.318286109Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:56:25.347182145Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:56:25.347294076Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:56:25.348567211Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:56:25.348764442Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:25.348906454Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:25.348929727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:56:25.348945407Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:56:25.349007833Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:56:25.349020632Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:56:30.365147249Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:56:30.395418764Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:56:30.395573343Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:56:30.39683326Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:56:30.397015773Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:30.397155525Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:30.397183903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:56:30.397199159Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:56:30.3972132Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:56:30.397225184Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:56:35.41689094Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:56:35.448050226Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:56:35.448155802Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:56:35.449301356Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:56:35.449476002Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:35.44963733Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:35.449664187Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:56:35.449680003Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:56:35.449701948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:56:35.449713468Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:56:40.466292906Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:56:40.495939833Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:56:40.496053365Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:56:40.497318338Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:56:40.497565736Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:40.497756127Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:40.497785807Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:56:40.49779985Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:56:40.497811778Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:56:40.497822051Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:56:45.514663833Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:56:45.543551415Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:56:45.543670811Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:56:45.544737811Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:56:45.54500709Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:45.54517917Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:45.545207677Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:56:45.545222622Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:56:45.545255107Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:56:45.545267697Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:56:50.563012133Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:56:50.59191554Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:56:50.592003179Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:56:50.59398516Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:56:50.594500097Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:50.595591191Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:50.595623721Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:56:50.595637176Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:56:50.595648092Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:56:50.595658623Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:56:55.610632341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:56:55.639726854Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:56:55.639820637Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:56:55.640993644Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:56:55.64124422Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:55.641515396Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:56:55.641556174Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:56:55.641573344Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:56:55.641586227Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:56:55.641939448Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:57:00.659018111Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:57:00.690521722Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:57:00.690641533Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:57:00.691808763Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:57:00.69201494Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:00.692180808Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:00.692217457Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:57:00.692267422Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:57:00.692865169Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:57:00.692886223Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:57:05.712272588Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:57:05.739052889Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:57:05.739155376Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:57:05.740170301Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:57:05.740500322Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:05.74070769Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:05.740739322Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:57:05.740752886Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:57:05.740763749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:57:05.740773979Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:57:10.757293352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:57:10.786433431Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:57:10.786522166Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:57:10.787812663Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:57:10.788260644Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:10.788855701Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:10.788896112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:57:10.788914981Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:57:10.788945723Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:57:10.788957263Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:57:15.802648299Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:57:15.834367651Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:57:15.834488806Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:57:15.835523244Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:57:15.83573655Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:15.835893492Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:15.835935278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:57:15.835950268Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:57:15.835964008Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:57:15.836545141Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:57:20.857096864Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:57:20.882925676Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:57:20.883038233Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:57:20.884306139Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:57:20.884653717Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:20.884842299Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:20.884890213Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:57:20.884953579Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:57:20.884967393Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:57:20.884978597Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:57:25.899893469Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:57:25.930648269Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:57:25.930747304Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:57:25.933971149Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:57:25.934563387Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:25.93503425Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:25.93527746Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:57:25.935414429Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:57:25.935430875Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:57:25.935442883Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:57:30.95246297Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:57:30.981266274Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:57:30.981401196Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:57:30.982468406Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:57:30.982661098Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:30.982827319Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:30.982856809Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:57:30.982873116Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:57:30.982916502Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:57:30.982928979Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:57:36.003300982Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:57:36.034802596Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:57:36.034932141Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:57:36.036596707Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:57:36.036895148Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:36.037178893Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:36.037264633Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:57:36.03728369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:57:36.037297402Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:57:36.037794537Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:57:41.054514218Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:57:41.085737419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:57:41.085828166Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:57:41.087459818Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:57:41.087787881Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:41.088057Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:41.088110206Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:57:41.088125861Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:57:41.088139979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:57:41.088151842Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:57:46.105532493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:57:46.135073519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:57:46.135211207Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:57:46.137329475Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:57:46.137570016Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:46.137780899Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:46.1378225Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:57:46.137883386Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:57:46.13789819Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:57:46.137908913Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:57:51.154700075Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:57:51.184731591Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:57:51.184851487Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:57:51.18635005Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:57:51.186826901Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:51.187203434Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:51.1872826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:57:51.187310008Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:57:51.187324428Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:57:51.187335889Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:57:56.206749963Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:57:56.237730666Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:57:56.237841234Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:57:56.23894826Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:57:56.239147964Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:56.239341897Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:57:56.239373304Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:57:56.239389263Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:57:56.239425203Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:57:56.239437157Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:58:01.257464094Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:58:01.287185302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:58:01.287313079Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:58:01.289414238Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:58:01.289880869Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:01.29018064Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:01.290212621Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:58:01.290228819Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:58:01.290254007Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:58:01.290266592Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:58:06.311472211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:58:06.339781609Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:58:06.339903248Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:58:06.342091635Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:58:06.342459935Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:06.342658815Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:06.342691Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:58:06.343016594Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:58:06.343046985Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:58:06.343059402Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:58:11.362779828Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:58:11.394259898Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:58:11.394377223Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:58:11.395834625Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:58:11.396211311Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:11.396386134Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:11.396497357Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:58:11.396513912Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:58:11.396526283Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:58:11.396536532Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:58:16.416944343Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:58:16.444901709Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:58:16.444992934Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:58:16.446516125Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:58:16.446760896Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:16.447109331Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:16.447145608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:58:16.447161119Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:58:16.447172337Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:58:16.447181396Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:58:21.465305483Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:58:21.495367909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:58:21.495457091Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:58:21.497133256Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:58:21.497403267Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:21.497925084Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:21.497959237Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:58:21.497975786Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:58:21.497989075Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:58:21.498000726Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:58:26.514504389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:58:26.546117613Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:58:26.546221576Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:58:26.547810898Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:58:26.548188339Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:26.548763731Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:26.548795814Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:58:26.548811951Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:58:26.548856685Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:58:26.548869228Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:58:31.568396293Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:58:31.594796521Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:58:31.59490833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:58:31.595972543Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:58:31.596158903Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:31.596348465Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:31.596398825Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:58:31.596522012Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:58:31.59653608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:58:31.596545914Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:58:36.616426355Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:58:36.647035679Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:58:36.647155188Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:58:36.649306933Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:58:36.649569246Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:36.64976577Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:36.649803784Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:58:36.649817497Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:58:36.649833781Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:58:36.650349393Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:58:41.66682186Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:58:41.697547193Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:58:41.6976479Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:58:41.699110702Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:58:41.699652065Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:41.699802035Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:41.699824324Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:58:41.699839271Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:58:41.699852254Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:58:41.699863885Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:58:46.715928528Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:58:46.747111951Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:58:46.747221886Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:58:46.748444962Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:58:46.748721544Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:46.748892522Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:46.748936615Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:58:46.748953199Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:58:46.748966041Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:58:46.749398257Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:58:51.765407906Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:58:51.794704262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:58:51.794818937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:58:51.797833436Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:58:51.798313039Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:51.798575596Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:51.798609261Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:58:51.798624894Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:58:51.798650847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:58:51.798661557Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:58:56.816933773Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:58:56.84772899Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:58:56.848185515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:58:56.850112134Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:58:56.850827722Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:56.851358489Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:58:56.851533397Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:58:56.851553123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:58:56.851567271Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:58:56.851579903Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:59:01.867933253Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:59:01.897857145Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:59:01.897975601Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:59:01.900224649Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:59:01.900620065Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:01.900836825Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:01.900878677Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:59:01.900894644Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:59:01.900906027Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:59:01.900916021Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:59:06.922152265Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:59:06.950131501Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:59:06.950257641Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:59:06.951302015Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:59:06.951483678Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:06.951621178Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:06.951643086Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:59:06.951658366Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:59:06.951672126Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:59:06.951683802Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:59:11.966559412Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:59:11.99454565Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:59:11.994674037Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:59:11.995832939Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:59:11.996043409Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:11.996224033Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:11.996266038Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:59:11.996283033Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:59:11.996296343Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:59:11.99630785Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:59:17.015882904Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:59:17.045094051Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:59:17.04520517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:59:17.046354462Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:59:17.046540027Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:17.046702351Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:17.046727341Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:59:17.046743266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:59:17.046757206Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:59:17.046769191Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:59:22.065211022Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:59:22.093712162Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:59:22.093845812Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:59:22.094940472Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:59:22.095141173Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:22.095320301Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:22.095352641Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:59:22.09536885Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:59:22.095383016Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:59:22.095395066Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:59:27.110120475Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:59:27.13998156Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:59:27.140122297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:59:27.14142603Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:59:27.141693576Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:27.14186956Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:27.141911477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:59:27.141928798Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:59:27.141941786Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:59:27.142295196Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:59:32.158867881Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:59:32.190440112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:59:32.190531957Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:59:32.192113813Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:59:32.192348629Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:32.192706613Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:32.192752789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:59:32.192818696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:59:32.192833051Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:59:32.19284419Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:59:37.212274834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:59:37.242358414Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:59:37.2424695Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:59:37.243578045Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:59:37.243845754Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:37.24408547Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:37.244115733Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:59:37.244130363Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:59:37.244143222Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:59:37.244154649Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:59:42.264331202Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:59:42.296927685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:59:42.297024422Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:59:42.299196019Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:59:42.299452053Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:42.299668158Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:42.299709322Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:59:42.299724209Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:59:42.299736857Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:59:42.299952734Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:59:47.318706527Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:59:47.347164216Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:59:47.347291625Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:59:47.349126121Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:59:47.349373158Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:47.349847004Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:47.349881155Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:59:47.34989585Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:59:47.349909252Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:59:47.349920602Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:59:52.368611065Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:59:52.399910389Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:59:52.400031259Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:59:52.402261034Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:59:52.40286779Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:52.403035586Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:52.403068197Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:59:52.403083737Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:59:52.403097912Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:59:52.403109641Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T05:59:57.419451187Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T05:59:57.44941653Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T05:59:57.449541517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T05:59:57.450648008Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T05:59:57.450870131Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:57.451009625Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T05:59:57.451037019Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T05:59:57.451051597Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T05:59:57.45106571Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T05:59:57.45107735Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:00:02.509611721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:00:02.72357539Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:00:02.724816275Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:00:02.74017842Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:00:02.740517062Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:02.764542925Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:02.764582983Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:00:02.764598096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:00:02.764610669Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:00:02.764621467Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:00:07.859391969Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:00:07.893762948Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:00:07.893889492Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:00:07.896712024Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:00:07.897147106Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:07.897691232Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:07.897750905Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:00:07.897767793Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:00:07.897781904Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:00:07.89779358Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:00:12.917321173Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:00:12.944730413Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:00:12.94483423Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:00:12.945971406Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:00:12.94614774Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:12.946309073Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:12.946341278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:00:12.946433675Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:00:12.946447602Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:00:12.946459385Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:00:17.962021985Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:00:17.99135197Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:00:17.991462309Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:00:17.992617628Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:00:17.992817303Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:17.992961648Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:17.992989743Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:00:17.993004033Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:00:17.993034295Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:00:17.993046407Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:00:23.015283939Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:00:23.046012479Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:00:23.046094847Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:00:23.047281392Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:00:23.047586684Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:23.047784202Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:23.047813958Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:00:23.047828937Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:00:23.047842971Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:00:23.047855113Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:00:28.063279305Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:00:28.095139917Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:00:28.09525232Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:00:28.096375851Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:00:28.096788504Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:28.097023832Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:28.097114539Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:00:28.097131586Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:00:28.097145522Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:00:28.09754002Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:00:33.116541323Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:00:33.14652573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:00:33.146613631Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:00:33.14825572Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:00:33.148605905Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:33.148838551Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:33.14891092Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:00:33.148941151Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:00:33.149193035Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:00:33.149207882Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:00:38.16630516Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:00:38.194284949Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:00:38.194395697Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:00:38.195477866Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:00:38.195660827Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:38.195803838Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:38.195825658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:00:38.195863136Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:00:38.195876174Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:00:38.195887505Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:00:43.215553579Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:00:43.24639882Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:00:43.246514662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:00:43.247564556Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:00:43.247775513Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:43.247953388Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:43.247992899Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:00:43.248007935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:00:43.248020697Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:00:43.248595688Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:00:48.264303475Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:00:48.292877259Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:00:48.292977932Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:00:48.294061521Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:00:48.294290694Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:48.294447915Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:48.294489212Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:00:48.294505285Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:00:48.294517847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:00:48.294905749Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:00:53.314398924Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:00:53.345594536Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:00:53.345704068Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:00:53.347282487Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:00:53.347750703Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:53.348145505Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:53.348180724Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:00:53.348196331Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:00:53.348209739Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:00:53.348221469Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:00:58.363537605Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:00:58.393484492Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:00:58.393595855Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:00:58.394636281Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:00:58.394911981Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:58.395102231Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:00:58.395154701Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:00:58.395169561Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:00:58.395182725Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:00:58.395629228Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:01:03.416262634Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:01:03.449816572Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:01:03.449910596Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:01:03.451100124Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:01:08.470293679Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:01:08.49813438Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:01:08.498264344Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:01:08.499679797Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:01:08.500076406Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:08.500227489Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:08.500266985Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:01:08.500282534Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:01:08.50032527Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:01:08.500337357Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:01:13.516618386Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:01:13.544938868Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:01:13.545059968Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:01:13.546740073Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:01:13.547219869Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:13.547640858Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:13.547673632Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:01:13.547689036Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:01:13.547702052Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:01:13.547713539Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:01:18.56370903Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:01:18.591687947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:01:18.59179601Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:01:18.59404004Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:01:23.616522279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:01:23.647787011Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:01:23.647883839Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:01:23.65231627Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:01:23.652714227Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:23.652869165Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:23.652904009Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:01:23.652919429Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:01:23.65293351Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:01:23.65294508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:01:28.671676138Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:01:28.701891421Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:01:28.701995131Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:01:28.70404538Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:01:28.704287583Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:28.704576933Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:28.704606821Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:01:28.704621838Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:01:28.704634704Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:01:28.704646098Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:01:33.724892711Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:01:33.754022529Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:01:33.754137011Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:01:33.755315708Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:01:33.755560359Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:33.755726007Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:33.755755626Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:01:33.755770899Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:01:33.755782747Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:01:33.755792839Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:01:38.772265886Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:01:38.80132489Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:01:38.801441316Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:01:38.802524529Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:01:38.803855095Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:38.804088483Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:38.804130834Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:01:38.804146033Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:01:38.804157499Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:01:38.804167333Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:01:43.822276176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:01:43.851001486Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:01:43.851099623Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:01:43.852609789Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:01:43.852830511Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:43.853001689Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:43.853032418Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:01:43.853048002Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:01:43.853062911Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:01:43.853074952Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:01:48.868304133Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:01:48.896315776Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:01:48.896478585Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:01:48.898084064Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:01:48.898697891Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:48.899198749Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:48.899231808Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:01:48.899272581Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:01:48.899285997Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:01:48.899297714Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:01:53.91563424Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:01:53.946818349Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:01:53.946935441Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:01:53.947985233Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:01:53.948255417Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:53.948585365Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:53.948617038Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:01:53.948632238Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:01:53.94864504Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:01:53.948656742Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:01:58.963301082Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:01:58.993150413Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:01:58.993277477Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:01:58.994650344Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:01:58.994938837Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:58.995211486Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:01:58.995292667Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:01:58.995311705Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:01:58.995325236Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:01:58.995353704Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:02:04.015164274Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:02:04.073383183Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:02:04.073483315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:02:04.075200556Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:02:04.07543991Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:04.0755914Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:04.075620723Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:02:04.075637235Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:02:04.075650875Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:02:04.075663274Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:02:09.095649951Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:02:09.123174463Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:02:09.123304046Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:02:09.124385529Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:02:09.12471496Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:09.124883499Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:09.124907098Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:02:09.124921792Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:02:09.124960287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:02:09.124972508Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:02:14.1466361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:02:14.175696476Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:02:14.175783266Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:02:14.176929171Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:02:14.177133428Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:14.17735393Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:14.177399819Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:02:14.177415416Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:02:14.177429631Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:02:14.17779388Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:02:19.196799703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:02:19.226943543Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:02:19.227032137Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:02:19.22820229Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:02:19.228586022Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:19.22876886Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:19.228810676Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:02:19.228826598Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:02:19.228838662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:02:19.22919218Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:02:24.24798344Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:02:24.277761585Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:02:24.277862384Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:02:24.280098707Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:02:24.28031686Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:24.28061617Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:24.280651784Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:02:24.280666104Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:02:24.280677776Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:02:24.28068902Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:02:29.296473831Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:02:29.325187721Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:02:29.325301446Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:02:29.327476909Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:02:29.327940941Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:29.328349744Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:29.328497268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:02:29.328515992Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:02:29.328530159Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:02:29.328542521Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:02:34.350273073Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:02:34.379563269Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:02:34.379650499Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:02:34.381318668Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:02:34.381493548Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:34.381633173Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:34.381669562Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:02:34.38168378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:02:34.381696528Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:02:34.381708066Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:02:39.403291196Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:02:39.432952138Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:02:39.433068035Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:02:39.434220578Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:02:39.434499477Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:39.434687603Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:39.434728793Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:02:39.43474369Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:02:39.434755409Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:02:39.435095113Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:02:44.4493659Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:02:44.479903666Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:02:44.480029435Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:02:44.481315033Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:02:44.481520833Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:44.481711857Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:44.481740286Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:02:44.481755911Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:02:44.481769078Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:02:44.481780881Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:02:49.501277316Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:02:49.530952054Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:02:49.531048857Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:02:49.532318108Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:02:49.532654799Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:49.53286518Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:49.532904759Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:02:49.532919967Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:02:54.555543924Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:02:54.584527956Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:02:54.584640633Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:02:54.588583626Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:02:54.58886122Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:54.589101423Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:54.589184141Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:02:54.58920101Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:02:54.589214408Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:02:54.589669121Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:02:59.605300198Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:02:59.635815895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:02:59.63590437Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:02:59.637086398Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:02:59.637371311Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:59.637560147Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:02:59.637594101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:02:59.637609002Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:02:59.637619983Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:02:59.637629969Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:03:04.654944088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:03:04.686090939Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:03:04.686185008Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:03:04.687189372Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:03:04.687440908Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:04.687659965Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:04.68769083Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:03:04.687706371Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:03:04.687718396Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:03:04.687728511Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:03:09.705752466Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:03:09.734871262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:03:09.734987183Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:03:09.73609464Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:03:09.736332857Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:09.736643799Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:09.736688711Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:03:09.736704774Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:03:09.736718713Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:03:09.737080138Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:03:14.75552162Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:03:14.786319764Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:03:14.786424734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:03:14.787490425Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:03:14.787739402Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:14.787913854Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:14.787941665Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:03:14.787955437Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:03:14.787967472Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:03:14.787978394Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:03:19.804291441Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:03:19.834444668Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:03:19.834533584Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:03:19.835936345Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:03:19.836106164Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:19.836258267Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:19.836289775Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:03:19.836302708Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:03:19.836315268Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:03:19.836325454Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:03:24.85001546Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:03:24.879393449Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:03:24.879498775Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:03:24.881249092Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:03:24.881727447Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:24.881888524Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:24.881919497Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:03:24.881953491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:03:24.88196727Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:03:24.881978494Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:03:29.896757962Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:03:29.927766312Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:03:29.927872612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:03:29.930089112Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:03:29.930645954Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:29.931072925Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:29.931106746Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:03:29.931121419Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:03:29.931154914Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:03:29.931167248Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:03:34.948977578Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:03:34.980019815Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:03:34.980143195Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:03:34.981780111Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:03:34.981993776Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:34.982177513Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:34.982203716Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:03:34.982219018Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:03:34.982231877Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:03:34.982258564Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:03:40.001099466Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:03:40.03340474Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:03:40.033530886Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:03:40.034695625Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:03:40.034875834Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:40.035037726Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:40.035060947Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:03:40.035077627Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:03:40.035090601Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:03:40.035102705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:03:45.054348256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:03:45.08410584Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:03:45.084227888Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:03:45.086180979Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:03:45.08647997Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:45.086735417Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:45.086767774Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:03:45.086783382Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:03:45.086797908Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:03:45.086809764Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:03:50.105894921Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:03:50.135957084Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:03:50.13604599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:03:50.138249816Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:03:50.138792082Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:50.139265288Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:50.139348683Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:03:50.139370832Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:03:50.139410293Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:03:50.139423049Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:03:55.156904047Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:03:55.189931784Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:03:55.190041176Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:03:55.191133666Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:03:55.191356692Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:55.191529732Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:03:55.191575824Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:03:55.19159129Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:03:55.191605412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:03:55.191947803Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:04:00.209362063Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:04:00.24161501Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:04:00.241742493Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:04:00.243618797Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:04:00.244177757Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:00.244842191Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:00.245065664Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:04:00.245086335Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:04:00.245099831Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:04:00.245260268Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:04:05.262354561Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:04:05.291720144Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:04:05.291816509Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:04:05.293575537Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:04:05.293852015Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:10.310621279Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:04:10.341528438Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:04:10.341631225Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:04:10.345143187Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:04:15.366297407Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:04:15.394270407Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:04:15.394388093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:04:15.396177087Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:04:15.396857119Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:15.397311846Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:15.397350963Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:04:15.397366758Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:04:15.397380687Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:04:15.397392166Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:04:20.414607642Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:04:20.443460662Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:04:20.443582587Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:04:20.445469759Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:04:20.445694989Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:20.445890059Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:20.445921101Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:04:20.445935404Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:04:20.445946416Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:04:20.445956661Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:04:25.465368635Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:04:25.497570576Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:04:25.497706924Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:04:25.498783531Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:04:25.498966736Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:25.499125518Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:25.499164762Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:04:25.499180615Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:04:25.499194088Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:04:25.499586044Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:04:30.514926433Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:04:30.544992195Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:04:30.54508368Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:04:30.547088302Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:04:30.547349683Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:30.54755767Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:30.547596859Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:04:30.547611583Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:04:30.547622938Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:04:30.547631942Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:04:35.567143677Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:04:35.595389714Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:04:35.595487013Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:04:35.596697723Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:04:35.596898674Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:35.597048712Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:35.597077171Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:04:35.597093231Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:04:35.597107055Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:04:35.597118865Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:04:40.613310892Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:04:40.641830792Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:04:40.641924925Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:04:40.643338538Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:04:40.643961788Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:40.644508857Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:40.64455378Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:04:40.64456872Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:04:40.644581734Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:04:40.644593603Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:04:45.660857853Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:04:45.690856101Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:04:45.691065038Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:04:45.692273589Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:04:45.692552583Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:45.692705424Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:45.692747847Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:04:45.692763507Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:04:45.692777606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:04:45.693189579Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:04:50.707927972Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:04:50.736503529Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:04:50.73660924Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:04:50.737795544Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:04:50.7382561Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:50.738425698Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:50.738455234Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:04:50.738493858Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:04:50.738507932Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:04:50.738520065Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:04:55.757308295Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:04:55.78670806Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:04:55.786820121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:04:55.787940549Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:04:55.788225783Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:55.788549999Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:04:55.7885898Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:04:55.788604552Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:04:55.78861754Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:04:55.788978521Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:05:00.805657025Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:05:00.836490143Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:05:00.836606484Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:05:00.838982473Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:05:00.839595469Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:00.8400304Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:00.840064907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:05:00.840080003Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:05:00.840093653Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:05:00.840105386Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:05:05.857138207Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:05:05.885439609Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:05:05.885551534Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:05:05.887219491Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:05:05.887673112Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:05.887864943Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:05.887901517Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:05:05.887916197Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:05:05.887946068Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:05:05.887957899Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:05:10.906890741Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:05:10.937418685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:05:10.937512169Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:05:10.938595701Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:05:10.938824911Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:10.93899271Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:10.939032945Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:05:10.939047945Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:05:10.939060455Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:05:10.939448864Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:05:15.955800391Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:05:15.985153068Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:05:15.985300288Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:05:15.986376389Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:05:15.986627727Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:15.986801386Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:15.986831449Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:05:15.986846879Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:05:15.986860217Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:05:15.986871854Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:05:21.00812953Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:05:21.037081765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:05:21.037170261Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:05:21.038259933Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:05:21.038478201Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:21.038659448Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:21.038703494Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:05:21.038718813Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:05:21.038731734Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:05:21.039054471Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:05:26.055364256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:05:26.083899646Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:05:26.084020432Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:05:26.085736992Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:05:26.086105042Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:26.086571932Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:26.086683426Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:05:26.086708086Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:05:26.086721009Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:05:26.086732555Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:05:31.100190457Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:05:31.130137927Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:05:31.130264376Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:05:31.131317521Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:05:31.131513844Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:31.131673185Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:31.131718192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:05:31.131733674Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:05:31.131747373Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:05:31.132116549Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:05:36.154331539Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:05:36.183314225Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:05:36.183422722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:05:36.184527052Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:05:36.184713156Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:36.184880198Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:36.184904636Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:05:36.184920259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:05:36.184932875Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:05:36.184944535Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:05:41.20326883Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:05:41.234591833Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:05:41.234693139Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:05:41.235700116Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:05:41.235874495Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:41.236018558Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:41.236059575Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:05:41.236074787Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:05:41.236087475Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:05:41.236528297Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:05:46.249743433Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:05:46.278394884Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:05:46.278506495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:05:46.279662656Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:05:46.279881153Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:46.280051713Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:46.280089706Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:05:46.2801038Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:05:46.280116231Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:05:46.280126215Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:05:51.301332017Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:05:51.332624019Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:05:51.332714465Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:05:51.334556237Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:05:51.335102783Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:51.335627295Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:51.335745585Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:05:51.335782288Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:05:51.335797079Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:05:51.335808952Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:05:56.35426868Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:05:56.383422415Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:05:56.383538936Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:05:56.384782797Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:05:56.385020577Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:56.385226597Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:05:56.38528943Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:05:56.385306547Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:05:56.38531925Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:05:56.385761131Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:06:01.422707386Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:06:01.481910816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:06:01.482120682Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:06:01.483533808Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:06:01.483714064Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:01.483867849Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:01.483929603Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:06:01.483945277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:06:01.483958863Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:06:01.483970074Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:06:06.507289891Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:06:06.536739639Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:06:06.536830006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:06:06.538468345Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:06:06.53866947Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:06.53883356Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:06.538866817Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:06:06.538883311Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:06:06.538896849Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:06:06.538907809Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:06:11.557280979Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:06:11.586327481Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:06:11.586448293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:06:11.58771317Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:06:11.587922703Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:11.588072305Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:11.588102418Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:06:11.588116716Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:06:11.588131228Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:06:11.588142927Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:06:16.607729678Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:06:16.638958303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:06:16.639049878Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:06:16.640190377Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:06:16.640620654Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:16.64086639Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:16.640895779Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:06:16.640910786Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:06:16.640922351Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:06:16.640932153Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:06:21.663271388Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:06:21.690549292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:06:21.690638336Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:06:21.693117214Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:06:21.693743596Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:21.693905317Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:21.693929371Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:06:21.693943621Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:06:21.693957119Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:06:21.693969225Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:06:26.715566867Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:06:26.74436803Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:06:26.744606485Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:06:26.746431471Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:06:26.746974737Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:26.74714081Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:26.747163436Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:06:26.747179271Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:06:26.747192885Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:06:26.747204978Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:06:31.764545911Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:06:31.792629207Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:06:31.792746642Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:06:31.793910867Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:06:31.79413717Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:31.794373512Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:31.794422315Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:06:31.794440086Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:06:31.79445337Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:06:31.794837602Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:06:36.815861782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:06:36.843994562Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:06:36.844114627Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:06:36.845363998Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:06:36.845561555Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:36.845718959Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:36.845758557Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:06:36.845773617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:06:36.845786981Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:06:36.846110606Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:06:41.863448447Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:06:41.891066678Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:06:41.891165189Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:06:41.892261828Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:06:41.892591383Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:41.89282382Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:41.892854273Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:06:41.892868707Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:06:41.89290524Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:06:41.892916512Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:06:46.911945039Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:06:46.942007384Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:06:46.942108228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:06:46.944679255Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:06:46.945469189Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:46.945917476Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:46.946153368Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:06:46.94617496Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:06:46.946603657Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:06:46.946617213Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:06:51.967302123Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:06:52.00478979Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:06:52.004956817Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:06:52.007318962Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:06:52.007865912Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:52.010983308Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:52.011109388Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:06:52.011134966Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:06:52.011150023Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:06:52.011162546Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:06:57.032027315Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:06:57.061786382Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:06:57.061903408Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:06:57.063088385Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:06:57.06334388Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:57.063583085Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:06:57.063630415Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:06:57.063646795Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:06:57.063660298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:06:57.064021213Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:07:02.105710454Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:07:02.164680372Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:07:02.164809919Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:07:02.166085404Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:07:02.166360477Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:02.166634585Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:02.166663375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:07:02.16667921Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:07:02.166691423Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:07:02.166701811Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:07:07.181609645Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:07:07.211416077Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:07:07.211550213Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:07:07.213428581Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:07:07.213996261Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:07.214517973Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:07.214736366Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:07:07.214758519Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:07:07.214772925Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:07:07.214785614Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:07:12.231055666Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:07:12.261594982Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:07:12.26168655Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:07:12.262742455Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:07:12.262933905Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:12.263076864Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:12.263118119Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:07:12.263133521Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:07:12.263146288Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:07:12.263508145Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:07:17.278211938Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:07:17.308992133Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:07:17.309083036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:07:17.311109504Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:07:17.31132525Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:17.311485612Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:17.311514213Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:07:17.31152941Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:07:17.311542442Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:07:17.311554583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:07:22.329928713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:07:22.360796802Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:07:22.360913056Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:07:27.378960023Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:07:27.408026508Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:07:27.408135766Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:07:27.40971358Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:07:27.410162279Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:27.410547283Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:27.410730635Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:07:27.41075195Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:07:27.410764912Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:07:27.410776806Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:07:32.428188496Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:07:32.456847579Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:07:32.456960289Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:07:32.458817389Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:07:32.459253291Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:32.45941629Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:32.459445467Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:07:32.459460259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:07:32.459474331Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:07:32.459486044Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:07:37.475438938Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:07:37.502842357Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:07:37.502942002Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:07:37.503998865Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:07:37.504171437Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:37.504334407Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:37.504359095Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:07:37.504373464Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:07:37.504387462Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:07:37.504521812Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:07:42.524635165Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:07:42.552453601Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:07:42.552558773Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:07:42.555118864Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:07:42.555329604Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:42.555501012Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:42.555545984Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:07:42.555561643Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:07:42.55557528Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:07:42.555961085Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:07:47.575284766Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:07:47.604156824Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:07:47.604285279Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:07:47.605781878Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:07:47.605958761Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:47.606104737Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:47.606128033Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:07:47.606141843Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:07:47.606154729Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:07:47.606166074Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:07:52.626277703Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:07:52.655960487Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:07:52.65607834Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:07:52.657546547Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:07:52.657818833Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:52.658062361Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:52.658112959Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:07:52.658127975Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:07:52.658141704Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:07:52.658523918Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:07:57.673960293Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:07:57.703684137Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:07:57.703791706Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:07:57.704973301Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:07:57.706569548Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:57.70676866Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:07:57.706799308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:07:57.706814382Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:07:57.706825545Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:07:57.706836005Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:08:02.727286776Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:08:02.759834208Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:08:02.759945491Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:08:02.761547273Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:08:02.762034999Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:02.762217069Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:02.762258464Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:08:02.762274761Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:08:02.762287891Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:08:02.76229933Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:08:07.777295088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:08:07.805943717Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:08:07.806506802Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:08:07.807884498Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:08:07.808186664Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:07.808619225Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:07.808681428Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:08:07.808697948Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:08:07.808710002Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:08:07.808729384Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:08:12.827166207Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:08:12.857077149Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:08:12.857188755Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:08:12.858275977Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:08:12.858493204Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:12.858654753Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:12.858684244Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:08:12.858699765Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:08:12.858712551Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:08:12.85872412Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:08:17.872428903Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:08:17.898826835Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:08:17.898942508Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:08:17.90070976Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:08:17.901191131Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:17.901650103Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:17.901883929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:08:17.90190753Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:08:17.901920995Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:08:17.901933352Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:08:22.921170548Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:08:22.950523981Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:08:22.950630673Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:08:22.953979666Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:08:22.954247029Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:22.954558933Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:22.954616406Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:08:22.954631201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:08:22.954641452Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:08:22.95465088Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:08:27.968867586Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:08:27.99786275Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:08:27.997955612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:08:27.999039997Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:08:27.999288691Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:27.99949237Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:27.999522263Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:08:27.999538605Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:08:27.999552706Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:08:27.999564161Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:08:33.015764575Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:08:33.046177364Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:08:33.046278998Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:08:33.047586524Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:08:33.047788828Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:33.04793404Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:33.047963133Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:08:33.04800242Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:08:33.048016152Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:08:33.048027978Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:08:38.063285409Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:08:38.09579633Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:08:38.095892361Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:08:38.097461384Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:08:38.097670022Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:38.097825574Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:38.097848362Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:08:38.097862395Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:08:38.097876589Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:08:38.097888199Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:08:43.116335033Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:08:43.146884311Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:08:43.146973219Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:08:43.148574213Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:08:43.148823585Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:43.149015739Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:43.149055632Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:08:43.149133634Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:08:43.149148438Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:08:43.14916035Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:08:48.163159884Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:08:48.192865851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:08:48.192971217Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:08:48.194030586Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:08:48.194263648Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:48.194449677Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:48.194481059Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:08:48.194497941Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:08:48.194509416Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:08:48.194520462Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:08:53.214316322Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:08:53.244853473Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:08:53.244943661Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:08:53.246111652Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:08:53.246326615Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:53.246509514Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:53.246557617Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:08:53.246573277Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:08:53.246587431Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:08:53.246599907Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:08:58.264820856Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:08:58.292548202Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:08:58.292651358Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:08:58.293799388Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:08:58.294018783Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:58.294197913Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:08:58.29423095Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:08:58.294280928Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:08:58.294294676Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:08:58.294306076Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:09:03.313621349Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:09:03.345188109Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:09:03.345323175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:09:03.348572016Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:09:03.348848513Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:03.349092708Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:03.349139587Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:09:03.349153376Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:09:03.349165439Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:09:03.349174482Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:09:08.365329622Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:09:08.395176458Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:09:08.395298907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:09:08.396486082Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:09:08.396718352Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:08.396897333Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:08.396929268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:09:08.396944169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:09:08.396957424Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:09:08.396968777Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:09:13.416423295Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:09:13.446293842Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:09:13.4464033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:09:13.448133428Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:09:13.448392585Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:13.448720621Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:13.448762127Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:09:13.448776928Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:09:13.448789382Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:09:13.448798404Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:09:18.465382075Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:09:18.494130953Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:09:18.494251747Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:09:18.496188907Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:09:18.496556547Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:18.496855773Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:18.496887744Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:09:18.4969036Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:09:18.496917282Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:09:18.496929339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:09:23.515915956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:09:23.544778958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:09:23.544868809Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:09:23.546632259Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:09:23.547099841Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:23.54751682Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:23.547550347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:09:23.547564424Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:09:23.547578374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:09:23.547590392Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:09:28.564172991Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:09:28.593577958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:09:28.593668672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:09:28.594755053Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:09:28.594928278Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:28.59507025Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:28.595092347Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:09:28.59510759Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:09:28.595120669Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:09:28.595132708Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:09:33.611785811Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:09:33.641885348Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:09:33.642000416Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:09:33.643477955Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:09:33.643709528Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:33.643905925Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:33.64398135Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:09:33.643998451Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:09:33.644011692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:09:33.64457596Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:09:38.661576274Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:09:38.690305841Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:09:38.69041237Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:09:38.691468948Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:09:38.691691232Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:38.691868743Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:38.691911477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:09:38.691927608Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:09:38.691985711Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:09:38.691997042Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:09:43.709145204Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:09:43.737919034Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:09:43.738008668Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:09:43.739126999Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:09:43.739340782Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:43.73950312Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:43.739547236Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:09:43.739562445Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:09:43.739575056Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:09:43.739913908Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:09:48.757284054Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:09:48.787494108Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:09:48.787605009Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:09:48.788863675Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:09:48.789080178Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:48.789386331Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:48.789446137Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:09:48.789463943Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:09:48.789476195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:09:48.789496757Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:09:53.810981008Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:09:53.84185273Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:09:53.841980592Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:09:53.84298303Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:09:53.843166767Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:53.843399428Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:53.843440616Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:09:53.843454993Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:09:53.843468749Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:09:53.843745661Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:09:58.860277247Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:09:58.889286712Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:09:58.889369901Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:09:58.890622259Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:09:58.891194139Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:58.891575788Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:09:58.891609112Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:09:58.891625351Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:09:58.891637885Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:09:58.891649294Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:10:03.907069693Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:10:03.936722727Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:10:03.936822039Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:10:03.938545164Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:10:03.939049426Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:03.939327353Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:03.939381773Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:10:03.939397607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:10:03.939410501Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:10:03.93943726Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:10:08.954918072Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:10:08.984334896Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:10:08.984469743Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:10:08.985753513Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:10:08.986336556Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:08.986790583Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:08.986863561Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:10:08.986886173Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:10:08.986899062Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:10:08.986910678Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:10:14.007334667Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:10:14.037721683Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:10:14.037855672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:10:14.038957328Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:10:14.039186583Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:14.039402895Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:14.039442772Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:10:14.039458407Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:10:14.039471842Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:10:14.039868162Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:10:19.059047915Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:10:19.089682913Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:10:19.089792959Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:10:19.090859193Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:10:19.091098011Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:19.091333569Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:19.091363987Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:10:19.091405607Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:10:19.091419663Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:10:19.091430855Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:10:24.111150555Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:10:24.141563574Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:10:24.141665987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:10:24.142807414Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:10:24.143004414Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:24.143261996Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:24.143308853Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:10:24.143326243Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:10:24.14333861Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:10:24.143801218Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:10:29.160252778Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:10:29.188857319Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:10:29.18897967Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:10:29.190652776Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:10:29.191078392Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:29.191287632Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:29.191317481Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:10:29.191333728Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:10:29.191347429Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:10:29.191358936Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:10:34.208048847Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:10:34.237585724Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:10:34.237676515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:10:34.238830597Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:10:34.239082353Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:39.258725024Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:10:39.286131567Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:10:39.286250769Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:10:39.288174638Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:10:39.288595444Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:39.288812955Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:39.288855671Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:10:39.288872582Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:10:39.288886002Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:10:44.307292379Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:10:44.336321628Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:10:44.336587297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:10:44.33775926Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:10:44.337953065Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:44.338110962Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:44.338146186Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:10:44.338159071Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:10:44.338169523Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:10:44.338178741Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:10:49.354964468Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:10:49.385580378Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:10:49.385673113Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:10:49.389303796Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:10:49.389783987Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:49.390109455Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:49.390213185Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:10:49.390231958Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:10:49.390333572Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:10:49.390345878Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:10:54.414922406Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:10:54.453167045Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:10:54.453292007Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:10:54.454627021Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:10:54.454961792Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:54.455289097Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:54.455344034Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:10:54.455360587Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:10:54.455374095Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:10:54.455758826Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:10:59.472944293Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:10:59.500302394Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:10:59.500429348Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:10:59.501518524Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:10:59.501796948Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:59.502001834Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:10:59.502048375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:10:59.502064216Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:10:59.502077418Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:10:59.502433472Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:11:04.523289809Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:11:04.551435486Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:11:04.551531317Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:11:04.552802933Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:11:04.552991615Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:04.553133457Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:04.553157358Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:11:04.55317173Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:11:04.553186944Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:11:04.553198649Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:11:09.569972236Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:11:09.601051432Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:11:09.601168485Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:11:09.602253482Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:11:09.602477059Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:09.602624454Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:09.602652147Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:11:09.602666398Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:11:09.602705518Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:11:09.602717239Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:11:14.623172341Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:11:14.65494402Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:11:14.655035188Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:11:14.656714669Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:11:14.657482013Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:14.658866932Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:14.658902749Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:11:14.658918109Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:11:14.658931969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:11:14.658943576Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:11:19.677301761Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:11:19.707552373Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:11:19.707658459Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:11:19.708816486Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:11:19.709019605Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:19.709175531Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:19.70921669Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:11:19.709232378Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:11:19.7092775Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:11:19.709289026Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:11:24.726288535Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:11:24.754168335Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:11:24.754298204Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:11:24.755409587Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:11:24.755648751Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:24.755856694Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:24.755894817Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:11:24.755909809Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:11:24.755921481Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:11:24.755930915Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:11:29.771220948Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:11:29.800572985Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:11:29.800665517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:11:29.801892334Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:11:29.802093087Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:29.802272041Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:29.802303551Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:11:29.802316476Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:11:29.802326838Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:11:29.80233675Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:11:34.821652645Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:11:34.853119896Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:11:34.853250062Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:11:34.854780615Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:11:34.855390344Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:34.855729247Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:34.855863326Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:11:34.855883513Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:11:34.855897573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:11:34.855909425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:11:39.876665025Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:11:39.905086303Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:11:39.90522112Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:11:39.906357547Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:11:39.906601922Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:39.906814804Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:39.906854605Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:11:39.906869374Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:11:39.906880682Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:11:39.907267725Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:11:44.92659783Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:11:44.957427519Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:11:44.957545804Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:11:44.958856178Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:11:44.95931136Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:44.959667812Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:44.959871476Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:11:44.960077943Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:11:44.96070676Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:11:44.960725472Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:11:49.978300796Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:11:50.009358459Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:11:50.009479572Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:11:50.010618664Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:11:50.010816922Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:50.010965568Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:50.011007678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:11:50.011024995Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:11:50.011039112Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:11:50.011529179Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:11:55.030190907Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:11:55.062857306Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:11:55.062949607Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:11:55.064690678Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:11:55.065102814Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:55.065567766Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:11:55.065601571Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:11:55.065617159Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:11:55.06563149Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:11:55.065643351Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:12:00.093051218Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:12:00.161107938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:12:00.161260963Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:12:00.162565573Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:12:00.16282093Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:00.162994075Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:00.163025807Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:12:00.16304162Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:12:00.163054985Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:12:00.163067Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:12:05.193298181Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:12:05.222671839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:12:05.222783621Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:12:05.225296527Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:12:05.225890769Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:05.226353679Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:05.226475511Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:12:05.226515233Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:12:05.226528822Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:12:05.226541003Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:12:10.240575626Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:12:10.27005234Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:12:10.270166421Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:12:10.272510661Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:12:10.272762468Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:10.272976933Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:10.273006721Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:12:10.273020005Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:12:10.273031339Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:12:10.273042193Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:12:15.29437936Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:12:15.325407468Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:12:15.325503161Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:12:15.327925052Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:12:15.328229798Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:15.328707022Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:15.328789162Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:12:15.328832306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:12:15.328847072Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:12:15.328859569Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:12:20.34931566Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:12:20.377652198Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:12:20.377763821Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:12:20.378925503Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:12:20.37918179Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:20.379421192Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:20.379459531Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:12:20.379474687Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:12:20.379538395Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:12:20.379551795Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:12:25.396276214Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:12:25.426865003Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:12:25.426954746Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:12:25.429255204Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:12:25.429540576Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:25.429804029Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:25.429835494Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:12:25.429850319Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:12:25.429865506Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:12:25.429877156Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:12:30.448466865Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:12:30.47709816Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:12:30.477207242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:12:30.478795485Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:12:30.478970807Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:30.479190438Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:30.479219782Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:12:30.479245688Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:12:30.479259764Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:12:30.479271256Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:12:35.495375672Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:12:35.524901759Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:12:35.52501067Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:12:35.527154989Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:12:35.52741788Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:35.527618844Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:35.527659323Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:12:35.527674725Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:12:35.527687778Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:12:35.528073138Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:12:40.543719389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:12:40.571422664Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:12:40.571529139Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:12:40.572667929Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:12:40.572836383Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:40.572975753Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:40.572998458Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:12:40.573013845Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:12:40.573026755Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:12:40.573038767Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:12:45.593352684Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:12:45.622392249Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:12:45.622556867Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:12:45.623670611Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:12:45.623877501Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:45.624095595Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:45.624126812Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:12:45.624165332Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:12:45.624177255Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:12:45.624187051Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:12:50.643027024Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:12:50.672848829Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:12:50.672952883Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:12:50.67545126Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:12:50.675631334Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:50.675765963Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:50.675793512Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:12:50.675807862Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:12:50.675836925Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:12:50.675849264Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:12:55.69594018Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:12:55.726525883Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:12:55.726630876Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:12:55.728712028Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:12:55.728920394Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:55.72913366Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:12:55.729177063Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:12:55.729193493Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:12:55.72920706Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:12:55.729377665Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:13:00.746269625Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:13:00.775585184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:13:00.77570455Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:13:00.778122992Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:13:00.778405389Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:00.778658263Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:00.77868913Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:13:00.77870315Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:13:00.778714251Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:13:00.778723923Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:13:05.793355505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:13:05.824243466Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:13:05.824348874Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:13:05.82704025Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:13:05.827258413Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:05.827446353Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:05.82747784Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:13:05.827493613Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:13:05.827507085Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:13:05.827518741Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:13:10.847289063Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:13:10.874735381Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:13:10.874840152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:13:10.875844792Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:13:10.876020937Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:10.876175824Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:10.876210116Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:13:10.876225784Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:13:10.876670646Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:13:10.876687682Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:13:15.891342151Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:13:15.920057408Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:13:15.920151444Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:13:15.922018512Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:13:15.922499077Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:15.923001033Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:15.923225111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:13:15.923607292Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:13:15.923628599Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:13:15.923640446Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:13:20.94122791Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:13:20.970913983Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:13:20.971013187Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:13:20.974156377Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:13:20.974710405Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:20.975170908Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:20.9752536Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:13:20.975272227Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:13:20.975323371Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:13:20.975335471Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:13:25.995551698Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:13:26.02553459Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:13:26.025650484Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:13:26.027227693Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:13:26.027767388Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:26.02816724Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:26.028209386Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:13:26.028225012Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:13:26.028910354Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:13:26.028927215Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:13:31.04705336Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:13:31.074833127Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:13:31.074927959Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:13:31.076149141Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:13:31.076513239Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:31.076754098Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:31.076820177Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:13:31.07683948Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:13:31.076853629Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:13:31.077276035Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:13:36.096283327Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:13:36.125157849Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:13:36.125263121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:13:36.126716995Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:13:36.126879951Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:36.127013851Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:36.127035515Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:13:36.127050944Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:13:36.127064624Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:13:36.12707583Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:13:41.140694559Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:13:41.170383508Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:13:41.170474415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:13:41.171466163Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:13:41.171683847Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:41.17184047Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:41.171911553Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:13:41.17192653Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:13:41.171940014Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:13:41.172530183Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:13:46.190293024Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:13:46.218594926Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:13:46.218701358Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:13:46.220018863Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:13:46.220295523Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:46.22066773Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:46.220743313Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:13:46.220761342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:13:46.220774082Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:13:46.221188311Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:13:51.236993149Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:13:51.267719863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:13:51.26780689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:13:51.26898589Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:13:51.269182651Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:51.269371752Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:51.269413155Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:13:51.269428366Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:13:51.269442036Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:13:51.269807683Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:13:56.285280973Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:13:56.314678943Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:13:56.314784582Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:13:56.315907718Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:13:56.316111002Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:56.316292703Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:13:56.316357903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:13:56.316375668Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:13:56.316456113Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:13:56.316466788Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:14:01.331564932Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:14:01.363853377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:14:01.363984925Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:14:01.365371035Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:14:01.365579511Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:01.365755339Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:01.365783718Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:14:01.365799894Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:14:01.365813123Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:14:01.365824527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:14:06.383767793Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:14:06.414379318Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:14:06.414491339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:14:06.416169878Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:14:06.416812239Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:06.417310916Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:06.41734602Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:14:06.41736092Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:14:06.417388395Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:14:06.417400283Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:14:11.432177642Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:14:11.462935675Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:14:11.463055006Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:14:11.465455578Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:14:11.466297101Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:11.466663655Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:11.466698189Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:14:11.466712753Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:14:11.466726819Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:14:11.466738227Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:14:16.486339225Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:14:16.516913889Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:14:16.517026426Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:14:16.520317409Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:14:16.520626842Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:16.520875965Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:16.520923915Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:14:16.520940284Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:14:16.520953513Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:14:16.521196824Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:14:21.541288188Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:14:21.569424862Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:14:21.569538074Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:14:21.570578724Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:14:21.570779158Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:21.570935966Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:21.570962367Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:14:21.570998548Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:14:21.57101184Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:14:21.571023329Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:14:26.591295308Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:14:26.622289633Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:14:26.622397833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:14:26.623541903Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:14:26.623803443Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:26.624013559Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:26.624085219Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:14:26.624102781Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:14:26.624115716Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:14:26.62425109Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:14:31.645328512Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:14:31.673844858Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:14:31.673955228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:14:31.674952826Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:14:31.675140858Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:31.675325436Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:31.675366175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:14:31.675381513Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:14:31.675394808Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:14:31.675740973Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:14:36.696301892Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:14:36.723751232Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:14:36.723869721Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:14:36.725051957Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:14:36.725262493Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:36.725473011Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:36.725512486Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:14:36.725526919Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:14:41.746266462Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:14:41.774762954Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:14:41.774855742Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:14:41.777415513Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:14:41.778536984Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:41.778970083Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:41.779017032Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:14:41.779034489Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:14:41.779050031Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:14:41.779451646Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:14:46.798589921Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:14:46.827528133Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:14:46.827620625Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:14:46.828821719Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:14:46.829031453Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:46.829190052Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:46.829219809Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:14:46.829263541Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:14:46.829278846Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:14:46.829290565Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:14:51.84509364Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:14:51.875093231Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:14:51.87522124Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:14:51.876368505Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:14:51.876720693Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:51.876971284Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:51.877002571Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:14:51.877016518Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:14:51.877028277Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:14:51.877037963Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:14:56.891931272Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:14:56.922018694Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:14:56.92213907Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:14:56.923384453Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:14:56.923614942Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:56.9238332Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:14:56.923860564Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:14:56.923874827Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:14:56.923887298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:14:56.923898836Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:15:01.959660914Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:15:02.046772441Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:15:02.046983799Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:15:02.049006344Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:15:02.049372761Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:02.049693211Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:02.049748397Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:15:02.049765123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:15:02.049840949Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:15:02.049854477Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:15:07.077278918Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:15:07.106936596Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:15:07.107020372Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:15:07.108159645Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:15:07.10858081Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:07.10878616Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:07.108818145Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:15:07.108834205Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:15:07.108872548Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:15:07.108884863Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:15:12.126285176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:15:12.154844161Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:15:12.154947188Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:15:12.15614357Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:15:12.156699006Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:12.157158323Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:12.157295204Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:15:12.157313033Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:15:12.157326787Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:15:12.157339189Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:15:17.172351133Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:15:17.201539154Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:15:17.201653314Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:15:17.202744603Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:15:17.202909414Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:17.203044731Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:17.203066811Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:15:17.203081617Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:15:17.203095069Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:15:17.203106481Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:15:22.223825403Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:15:22.253349094Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:15:22.253446771Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:15:22.254541831Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:15:22.254751917Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:22.254910842Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:22.254951724Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:15:22.254966404Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:15:22.254980553Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:15:22.255343129Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:15:27.27014442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:15:27.299161426Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:15:27.299278863Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:15:27.30031156Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:15:27.300669205Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:27.300827796Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:27.300868085Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:15:27.300958878Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:15:27.30097267Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:15:27.300984524Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:15:32.319109414Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:15:32.350409604Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:15:32.350532051Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:15:32.353268968Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:15:32.353787884Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:32.353967758Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:32.354001041Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:15:32.354026371Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:15:32.354091382Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:15:32.354104191Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:15:37.372500128Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:15:37.400441842Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:15:37.400553951Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:15:37.402949542Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:15:37.403187762Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:37.403728795Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:37.403929117Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:15:37.404021655Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:15:37.404036374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:15:37.404231635Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:15:42.423546042Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:15:42.452216634Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:15:42.452352339Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:15:42.453986772Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:15:42.454518991Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:42.454683859Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:42.454708254Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:15:42.454723155Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:15:42.454736445Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:15:42.45474825Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:15:47.469542825Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:15:47.497869194Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:15:47.497972916Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:15:47.499047094Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:15:47.499254373Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:47.499429319Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:47.49945869Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:15:47.499473696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:15:47.499487072Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:15:47.499498527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:15:52.515818372Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:15:52.545200684Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:15:52.545317454Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:15:52.546379921Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:15:52.546588454Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:52.546799655Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:52.5468395Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:15:52.546855491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:15:52.546869396Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:15:52.546881101Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:15:57.56184539Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:15:57.591539541Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:15:57.591665801Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:15:57.592840775Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:15:57.593024599Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:57.593178046Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:15:57.593199391Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:15:57.593213938Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:15:57.593227751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:15:57.593259516Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:16:02.613419993Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:16:02.642056505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:16:02.642180036Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:16:02.643395133Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:16:02.64363605Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:02.643836969Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:02.64386751Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:16:02.643881646Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:16:02.643893941Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:16:02.643903982Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:16:07.660304449Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:16:07.69037257Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:16:07.690477687Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:16:07.692141839Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:16:07.69278054Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:07.692934824Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:07.692963189Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:16:07.692978892Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:16:07.692992908Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:16:07.693005754Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:16:12.711201168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:16:12.742306974Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:16:12.742417589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:16:12.744063393Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:16:12.744628801Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:12.744998507Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:12.745037488Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:16:12.74505261Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:16:12.745063933Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:16:12.74507503Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:16:17.763513334Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:16:17.793398419Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:16:17.793505539Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:16:17.795130783Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:16:17.795549681Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:17.796045028Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:17.796287458Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:16:17.796559603Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:16:17.796819223Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:16:17.796836577Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:16:22.814774352Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:16:22.844753007Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:16:22.844922274Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:16:22.846014507Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:16:22.846205734Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:22.846399403Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:22.846439838Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:16:22.846455348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:16:22.846468588Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:16:22.846787889Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:16:27.863265528Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:16:27.891226229Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:16:27.891362517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:16:27.892568037Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:16:27.892766993Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:27.89293191Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:27.892959278Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:16:27.892973811Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:16:27.892987701Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:16:27.892999038Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:16:32.910293159Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:16:32.939640198Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:16:32.939751717Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:16:32.941072787Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:16:32.941339374Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:32.941527481Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:32.94155561Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:16:32.941579681Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:16:32.941593727Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:16:32.941605144Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:16:37.95545393Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:16:37.984762285Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:16:37.984859931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:16:37.985925564Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:16:37.986120056Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:37.986283709Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:37.986307788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:16:37.986322071Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:16:37.986335873Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:16:37.986347408Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:16:43.005640931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:16:43.035415993Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:16:43.035527639Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:16:43.036761638Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:16:43.036978227Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:43.037176465Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:43.037204453Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:16:43.037219749Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:16:43.037246155Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:16:43.037256959Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:16:48.054271259Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:16:48.082885839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:16:48.082973326Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:16:48.085181797Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:16:48.085775022Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:48.086093223Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:48.086144175Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:16:48.086160461Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:16:48.0861733Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:16:48.086183703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:16:53.102226849Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:16:53.131899718Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:16:53.132000961Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:16:53.133284367Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:16:53.133484179Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:53.133632221Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:53.133662576Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:16:53.13367884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:16:53.133692734Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:16:53.133704743Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:16:58.149562651Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:16:58.181421936Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:16:58.181542983Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:16:58.182648378Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:16:58.182828607Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:58.182961253Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:16:58.182988688Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:16:58.183004238Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:16:58.183017432Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:16:58.183029089Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:17:03.203383473Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:17:03.23433629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:17:03.234430292Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:17:03.236099897Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:17:03.236841962Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:03.237388378Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:03.237516674Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:17:03.237565636Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:17:03.237580132Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:17:03.2375928Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:17:08.253576074Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:17:08.283573696Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:17:08.283673606Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:17:08.284898753Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:17:08.285121831Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:08.285308226Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:08.285350418Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:17:08.285367943Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:17:08.285381635Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:17:08.285854758Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:17:13.306173647Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:17:13.335505724Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:17:13.335608559Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:17:13.336853054Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:17:13.337033632Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:13.337212024Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:13.337249292Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:17:13.337263755Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:17:13.337275798Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:17:13.3372855Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:17:18.355402587Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:17:18.385004609Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:17:18.385104689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:17:18.386214332Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:17:18.386494785Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:18.386743815Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:18.386786543Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:17:18.386802199Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:17:18.386815716Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:17:18.387196171Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:17:23.405120312Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:17:23.434553524Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:17:23.434667976Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:17:23.436061436Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:17:23.436338724Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:23.436732067Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:23.436775342Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:17:23.436790733Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:17:23.436803735Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:17:23.437145993Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:17:28.454315607Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:17:28.483140927Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:17:28.483263155Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:17:28.484371525Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:17:28.484682754Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:28.484843789Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:28.484865578Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:17:28.484880065Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:17:28.484893969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:17:28.484905599Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:17:33.499093186Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:17:33.529810872Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:17:33.529903035Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:17:33.532103111Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:17:33.53274568Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:33.533199399Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:33.533334584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:17:33.533357217Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:17:33.533371412Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:17:33.533382993Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:17:38.551547759Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:17:38.578886848Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:17:38.57897626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:17:38.580798095Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:17:38.581007528Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:38.581164863Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:38.581197912Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:17:38.581212845Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:17:38.581226221Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:17:38.581596605Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:17:43.598135645Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:17:43.627030173Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:17:43.627134896Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:17:43.628280241Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:17:43.628720963Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:43.628905937Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:43.628949296Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:17:43.628966029Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:17:43.62897961Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:17:43.629403153Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:17:48.645602179Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:17:48.6744945Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:17:48.674581553Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:17:48.675572109Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:17:48.675811147Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:48.676006951Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:48.676072321Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:17:48.676091083Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:17:48.67610396Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:17:53.694288523Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:17:53.723925095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:17:53.724009494Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:17:53.725255526Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:17:53.725516687Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:53.725719964Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:53.725752337Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:17:53.725767196Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:17:53.72578023Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:17:53.725791227Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:17:58.742269747Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:17:58.771375776Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:17:58.771480502Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:17:58.772694007Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:17:58.772921035Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:58.773115424Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:17:58.773154832Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:17:58.77317028Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:17:58.773184292Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:17:58.773255204Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:18:03.79122684Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:18:03.820718436Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:18:03.82082931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:18:03.822306845Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:18:03.822825844Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:03.823255342Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:03.823289331Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:18:03.823304148Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:18:03.823317346Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:18:03.823328945Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:18:08.839929356Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:18:08.868653032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:18:08.868741521Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:18:08.870797986Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:18:08.870976731Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:08.87111548Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:08.871157707Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:18:08.871217942Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:18:08.871231236Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:18:08.871438154Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:18:13.889529647Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:18:13.919664711Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:18:13.919772257Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:18:13.921438886Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:18:13.923290083Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:13.923521545Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:13.923554906Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:18:13.923569137Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:18:13.923581689Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:18:13.92359267Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:18:18.940265982Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:18:18.966135526Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:18:18.966262415Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:18:18.9673447Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:18:18.96756909Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:18.967746041Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:18.967771654Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:18:18.967787631Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:18:18.967800397Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:18:18.967811869Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:18:23.98702432Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:18:24.017396707Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:18:24.017517271Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:18:24.0186192Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:18:24.018855796Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:24.019062835Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:24.019093647Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:18:24.019110368Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:18:24.019122143Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:18:24.019131932Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:18:29.040743787Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:18:29.069931307Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:18:29.070045745Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:18:29.071276408Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:18:29.07155796Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:29.07180314Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:29.071846338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:18:29.071871359Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:18:29.072213921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:18:29.072230903Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:18:34.092809276Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:18:34.122396344Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:18:34.122508153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:18:34.124790431Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:18:34.124989759Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:34.125159935Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:34.125190297Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:18:34.125206142Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:18:34.125264205Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:18:34.125276703Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:18:39.144589825Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:18:39.174622825Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:18:39.174715037Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:18:39.175769173Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:18:39.175960969Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:39.176119106Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:39.176166904Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:18:39.176183106Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:18:39.176687337Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:18:39.176706286Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:18:44.193951721Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:18:44.223212527Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:18:44.223315419Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:18:44.224896235Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:18:44.225067147Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:44.225214345Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:44.225250295Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:18:44.225266219Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:18:44.225314019Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:18:44.2253267Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:18:49.243274389Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:18:49.273153765Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:18:49.273288144Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:18:54.290755959Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:18:54.321292083Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:18:54.321452726Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:18:54.322882057Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:18:54.323072301Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:54.323229714Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:54.323287796Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:18:54.323302758Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:18:54.323314139Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:18:54.323322519Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:18:59.337295659Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:18:59.366468768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:18:59.366560589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:18:59.367673743Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:18:59.367902326Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:59.368100551Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:18:59.368142086Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:18:59.368158416Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:18:59.368170938Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:18:59.368250211Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:19:04.385299573Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:19:04.417609084Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:19:04.417735044Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:19:04.420185291Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:19:04.420633459Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:04.42081755Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:04.420847551Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:19:04.420862094Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:19:04.420873662Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:19:04.420884574Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:19:09.438232365Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:19:09.4696729Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:19:09.46978958Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:19:14.49026617Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:19:14.520321924Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:19:14.520474489Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:19:14.523813769Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:19:14.524015847Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:14.524204724Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:14.524248842Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:19:14.524264448Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:19:14.524276959Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:19:14.524288824Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:19:19.540346513Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:19:19.569331355Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:19:19.569455392Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:19:19.570630234Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:19:19.570856073Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:19.571035331Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:19.571078954Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:19:19.571095251Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:19:19.571108298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:19:19.57150684Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:19:24.587624743Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:19:24.617670387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:19:24.617760987Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:19:24.619588209Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:19:24.620030621Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:24.620227595Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:24.620280076Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:19:24.620295281Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:19:24.620308073Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:19:24.620318117Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:19:29.636278638Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:19:29.666921864Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:19:29.667010174Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:19:29.668124338Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:19:29.668360455Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:29.668727671Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:29.668758006Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:19:29.668773954Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:19:29.668787863Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:19:29.668800243Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:19:34.68602552Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:19:34.715647292Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:19:34.715763325Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:19:34.717314054Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:19:34.717534186Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:34.717686609Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:34.717714406Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:19:34.717729636Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:19:34.717742195Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:19:34.717754523Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:19:39.733674765Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:19:39.760539219Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:19:39.760667763Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:19:39.762313447Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:19:39.762562639Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:39.76276749Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:39.762798428Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:19:39.762828323Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:19:39.762840201Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:19:39.762850319Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:19:44.779918554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:19:44.80848197Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:19:44.808605009Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:19:44.81013109Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:19:44.810381608Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:44.810599549Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:44.810630182Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:19:44.810644723Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:19:44.810678648Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:19:44.810687705Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:19:49.831247398Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:19:49.859646644Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:19:49.859733774Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:19:49.860837831Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:19:49.861003608Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:49.861135798Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:49.8611569Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:19:49.861171489Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:19:49.861185713Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:19:49.861197194Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:19:54.878849206Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:19:54.906990768Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:19:54.907103421Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:19:54.908133295Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:19:54.908354092Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:54.908669049Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:54.908713838Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:19:54.908728791Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:19:54.908739663Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:19:54.908749395Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:19:59.925620076Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:19:59.955422126Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:19:59.955537138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:19:59.957260923Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:19:59.957516977Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:59.957693384Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:19:59.957746339Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:19:59.957760935Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:19:59.9577744Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:19:59.958246527Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:20:04.98030243Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:20:05.013013338Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:20:05.013122435Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:20:05.014666292Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:20:05.014910411Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:05.015165711Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:05.015200829Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:20:05.015216135Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:20:05.015229299Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:20:05.015255425Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:20:10.032385234Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:20:10.060285932Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:20:10.060377796Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:20:10.061706474Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:20:10.06198261Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:10.062262832Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:10.062293299Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:20:15.083296748Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:20:15.112759527Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:20:15.112853851Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:20:15.113975209Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:20:15.114198088Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:15.11445249Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:15.114494493Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:20:15.114510381Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:20:15.114522913Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:20:15.114942861Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:20:20.130134902Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:20:20.159750212Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:20:20.159866723Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:20:20.161106859Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:20:20.161337198Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:20.161511659Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:20.161534644Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:20:20.161549832Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:20:20.16156428Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:20:20.161577339Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:20:25.180550872Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:20:25.209472095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:20:25.209563495Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:20:25.210686748Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:20:25.210887292Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:25.211033896Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:25.211057256Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:20:25.211072983Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:20:25.211085879Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:20:25.21109737Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:20:30.226354941Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:20:30.255531605Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:20:30.255702569Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:20:30.256938602Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:20:30.257179197Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:30.257442529Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:30.257474426Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:20:30.257488969Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:20:30.25750197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:20:30.257513294Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:20:35.278836788Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:20:35.31009312Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:20:35.310182879Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:20:35.31320119Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:20:35.313527268Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:35.313790094Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:35.313830926Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:20:35.313847122Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:20:35.313860923Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:20:35.31420185Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:20:40.331578905Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:20:40.36011645Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:20:40.360229682Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:20:40.362768863Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:20:40.362963803Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:40.363152438Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:40.363183379Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:20:40.363198555Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:20:40.363211201Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:20:40.363222665Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:20:45.378913894Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:20:45.406595504Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:20:45.406709093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:20:45.409143526Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:20:45.409791151Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:45.410181385Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:45.410215282Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:20:45.410230668Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:20:45.410257287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:20:45.410269568Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:20:50.427267727Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:20:50.455810332Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:20:50.455911226Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:20:50.458991144Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:20:50.459157303Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:50.459355928Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:50.459385426Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:20:50.45940111Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:20:50.459413874Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:20:50.459425891Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:20:55.481173099Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:20:55.507884296Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:20:55.507971791Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:20:55.509751722Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:20:55.510155084Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:55.510519305Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:20:55.510679271Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:20:55.510699707Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:20:55.510714231Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:20:55.510726048Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:21:00.526306943Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:21:00.555136224Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:21:00.555255078Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:21:00.556388208Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:21:00.556795524Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:00.55701971Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:00.557064638Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:21:00.557081473Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:21:00.557141986Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:21:00.557152997Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:21:05.577307372Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:21:05.608756573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:21:05.608849407Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:21:05.610705294Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:21:05.610923841Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:05.611087378Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:05.611121291Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:21:05.611137691Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:21:05.611152746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:21:05.611164069Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:21:10.626313449Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:21:10.656314566Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:21:10.656459051Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:21:10.657593838Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:21:10.657874854Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:10.658082454Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:10.65811369Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:21:10.658130112Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:21:10.658142905Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:21:10.658154756Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:21:15.679489935Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:21:15.706587084Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:21:15.706684111Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:21:15.707776192Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:21:15.707954359Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:15.70808754Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:15.708108843Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:21:15.708123265Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:21:15.708137183Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:21:15.708149532Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:21:20.724357843Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:21:20.751383991Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:21:20.751496725Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:21:20.753048713Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:21:20.753419729Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:20.753569165Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:20.753592565Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:21:20.753608792Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:21:20.753621982Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:21:20.753634188Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:21:25.770746181Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:21:25.798260729Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:21:25.798352665Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:21:25.800170033Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:21:25.800754291Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:25.801203926Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:25.801459969Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:21:25.80148157Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:21:25.80193443Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:21:25.801949845Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:21:30.815271864Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:21:30.844822364Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:21:30.845318047Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:21:30.846528838Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:21:30.846992149Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:30.847428947Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:30.84746111Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:21:30.847477266Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:21:30.847490692Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:21:30.847501985Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:21:35.866286271Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:21:35.893948787Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:21:35.894036719Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:21:35.896564726Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:21:35.898468189Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:35.898707752Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:35.898760253Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:21:35.89877666Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:21:35.898790137Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:21:35.898801863Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:21:40.916652284Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:21:40.946583853Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:21:40.946704073Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:21:40.948678915Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:21:40.949110496Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:40.949639357Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:40.949675742Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:21:40.949703306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:21:40.949717402Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:21:40.949728809Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:21:45.967401361Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:21:45.998917442Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:21:45.999007767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:21:46.000187761Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:21:46.000548285Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:46.000757565Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:46.000801137Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:21:46.000818501Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:21:46.000832818Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:21:46.001188873Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:21:51.025604206Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:21:51.055643626Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:21:51.055763242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:21:51.057006219Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:21:51.057211404Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:51.057433369Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:51.057472634Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:21:51.05748925Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:21:51.057502108Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:21:51.05781859Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:21:56.077220006Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:21:56.105977267Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:21:56.106092386Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:21:56.107104968Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:21:56.107399787Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:56.107631602Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:21:56.107661349Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:21:56.107690329Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:21:56.107724969Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:21:56.107735954Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:22:01.127942388Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:22:01.158940486Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:22:01.159035033Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:22:01.161175163Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:22:01.1616654Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:01.162063299Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:01.162258198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:22:01.162279332Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:22:01.162317771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:22:01.162329994Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:22:06.182407691Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:22:06.21311895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:22:06.213255924Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:22:06.21431671Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:22:06.214516099Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:06.214684603Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:06.214726038Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:22:06.214741239Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:22:06.214754689Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:22:06.214766275Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:22:11.231937946Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:22:11.261429446Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:22:11.261518101Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:22:11.262539009Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:22:11.262721679Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:11.262868856Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:11.262895812Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:22:11.262911604Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:22:11.262925061Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:22:11.262936856Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:22:16.282283309Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:22:16.311762404Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:22:16.311850846Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:22:16.312980394Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:22:16.313220212Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:16.313466317Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:16.313505749Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:22:16.313520847Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:22:16.313535002Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:22:16.313992576Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:22:21.332413322Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:22:21.361655583Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:22:21.36177589Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:22:21.363958613Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:22:21.364153406Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:21.364333826Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:21.364365149Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:22:21.364380937Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:22:21.3643935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:22:21.364531548Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:22:26.38300525Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:22:26.414344151Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:22:26.41444213Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:22:26.416098472Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:22:26.416768129Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:26.416936686Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:26.416966394Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:22:26.416981712Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:22:26.416994859Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:22:26.417006585Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:22:31.431888451Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:22:31.462124462Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:22:31.462252459Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:22:31.463259065Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:22:31.463513288Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:31.463691284Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:31.463720649Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:22:31.46375063Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:22:31.463763071Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:22:31.463772477Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:22:36.485534197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:22:36.514794486Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:22:36.514895582Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:22:36.517812105Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:22:36.518006339Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:36.518161688Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:36.518190425Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:22:36.518204945Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:22:36.518218746Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:22:36.518230156Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:22:41.539629307Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:22:41.577358983Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:22:41.577481681Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:22:41.579101945Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:22:41.579732555Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:41.57997115Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:41.580001737Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:22:41.580016123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:22:41.580029693Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:22:41.580040249Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:22:46.599348538Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:22:46.629585401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:22:46.629717269Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:22:46.63134004Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:22:46.63183565Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:46.632286623Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:46.632553385Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:22:46.632577825Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:22:46.632592564Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:22:46.632604932Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:22:51.654339495Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:22:51.683742742Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:22:51.683836323Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:22:51.685027163Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:22:51.685277219Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:51.685466178Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:51.685500519Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:22:51.685540426Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:22:51.685575009Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:22:51.685586613Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:22:56.704293464Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:22:56.733507345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:22:56.733616746Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:22:56.734708838Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:22:56.734870994Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:56.735005402Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:22:56.73502754Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:22:56.735043302Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:22:56.73505616Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:22:56.735067919Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:23:01.754429946Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:23:01.78905974Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:23:01.789161273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:23:01.791308976Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:23:01.791847321Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:01.79234237Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:01.792716658Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:23:01.792767134Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:23:01.792781912Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:23:01.792795048Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:23:06.815187013Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:23:06.859805183Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:23:06.859958599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:23:06.861219526Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:23:06.861596026Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:06.861908737Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:06.861940549Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:23:06.86195709Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:23:06.861970998Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:23:06.8619828Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:23:11.881293002Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:23:11.909547362Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:23:11.909640401Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:23:11.911872358Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:23:11.912133824Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:11.912370505Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:11.912561677Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:23:11.912580442Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:23:11.912591974Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:23:11.912602109Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:23:16.93067983Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:23:16.961804496Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:23:16.96193011Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:23:16.962994345Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:23:16.963194738Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:16.963380994Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:16.963410191Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:23:16.963441862Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:23:16.963455699Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:23:16.963465409Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:23:21.984469345Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:23:22.014658366Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:23:22.014770674Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:23:22.015885732Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:23:22.016133776Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:22.016348834Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:22.016388458Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:23:22.016496226Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:23:22.016511404Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:23:22.016521716Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:23:27.033713771Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:23:27.064386876Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:23:27.064591732Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:23:27.067389632Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:23:27.06790325Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:27.06810175Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:27.068133159Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:23:27.068148526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:23:27.068162403Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:23:27.068174328Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:23:32.084474058Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:23:32.113343895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:23:32.113475921Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:23:32.114616972Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:23:32.114866732Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:32.11505994Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:37.129617755Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:23:37.159446478Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:23:37.159559315Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:23:37.1611078Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:23:37.161639242Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:37.162101428Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:37.162135298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:23:37.162150543Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:23:37.162163913Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:23:37.162175398Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:23:42.182307584Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:23:42.211723607Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:23:42.211826542Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:23:42.214133244Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:23:47.228177928Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:23:47.257361172Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:23:47.257495195Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:23:47.259944603Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:23:47.260195985Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:47.260564417Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:47.26061687Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:23:47.260634752Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:23:47.260648051Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:23:47.260997582Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:23:52.279831931Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:23:52.311580439Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:23:52.311704332Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:23:52.313531519Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:23:52.313785221Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:52.314304028Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:52.314366447Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:23:52.314382551Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:23:52.314395607Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:23:52.314407348Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:23:57.329627764Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:23:57.360069827Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:23:57.360181213Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:23:57.361418032Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:23:57.361687542Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:57.361922011Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:23:57.361950584Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:23:57.361964201Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:23:57.36197592Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:23:57.361986648Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:24:02.387154661Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:24:02.442949775Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:24:02.443076876Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:24:02.445273582Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:24:02.445842133Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:24:02.446373571Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:24:02.446414326Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:24:02.446431154Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:24:02.446445108Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:24:02.446457529Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:24:07.463140503Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:24:07.491525667Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:24:07.491617114Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:24:07.492745985Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:24:07.492972921Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:24:07.493177188Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:24:07.493219529Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:24:07.493269778Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:24:07.49330753Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:24:07.493668987Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:24:12.511272045Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:24:12.540349294Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:24:12.5406228Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:24:12.541762868Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:24:12.541958557Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:24:12.542118187Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:24:12.542158779Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:24:12.542174957Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:24:12.542188095Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:24:12.542253063Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:24:17.557849925Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:24:17.58748282Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:24:17.587581093Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:24:17.588767775Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:24:17.588940117Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:24:17.589079664Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:24:17.589101956Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:24:17.589117088Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:24:17.589130511Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:24:17.589143032Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:24:22.604429575Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:24:22.635360979Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:24:22.635473035Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:24:27.650298638Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:24:27.680763958Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:24:27.680879873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:24:27.683117754Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:24:27.68374311Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:24:27.684226859Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:24:27.684353828Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:24:27.684370961Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:24:27.684483419Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:24:27.684495959Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:24:32.702288602Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:24:32.7306625Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:24:32.730756079Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:24:32.732607133Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:24:32.733128119Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:24:32.733556485Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:24:32.733787375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:24:32.733808189Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:24:32.734078336Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:24:32.734093924Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:24:37.748295568Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:24:37.779892806Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:24:37.780014273Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:24:37.782112334Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:24:37.782687985Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:24:37.782948758Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:24:37.782979788Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:24:37.78299468Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:24:37.783033966Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:24:37.78304681Z","level":"ERROR","msg":"jwt signer init","error":"jwt signing key must be at least 32 bytes — set WAF_JWT_SIGNING_KEY","service":"config-service"}
{"time":"2026-05-02T06:32:54.62766685Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:32:54.694917522Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:32:54.695044653Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:32:54.696218028Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:32:54.696509322Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:32:54.696714802Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:32:54.696765012Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:32:54.69678145Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:32:54.696793627Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:32:54.697104904Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:32:54.698163007Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:32:54.698447734Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:32:59.734869683Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:32:59.763452166Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:32:59.763571935Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:32:59.765107067Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:32:59.765321168Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:32:59.765665428Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:32:59.765691826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:32:59.765706493Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:32:59.765720154Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:32:59.765982028Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:04.781385401Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:33:04.809042819Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:33:04.809167303Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:33:04.810290341Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:04.810536003Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:04.810740619Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:04.81078552Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:33:04.810800661Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:33:04.810811947Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:33:04.81133206Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:33:04.811853574Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:09.831982732Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:33:09.860732796Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:33:09.860827772Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:33:09.863079309Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:09.863278273Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:09.863423402Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:09.863446485Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:33:09.863462237Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:33:09.863474702Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:33:09.863734121Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:14.8841081Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:33:14.914591302Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:33:14.914686069Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:33:14.916303534Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:14.916806355Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:14.91695172Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:14.9169988Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:33:14.917022577Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:33:14.91703552Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:33:14.917679622Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:33:14.917737468Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:19.938281007Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:33:19.968177933Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:33:19.968325734Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:33:19.970180467Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:19.970657864Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:19.970846753Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:19.970878188Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:33:19.970903707Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:33:19.970918114Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:33:19.97127769Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:33:19.971516105Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:24.986603124Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:33:25.018188793Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:33:30.037609809Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:33:30.067621339Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:33:30.067730952Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:33:30.069705499Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:30.070081503Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:30.070515402Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:30.070549416Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:33:30.070565475Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:33:30.070578706Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:33:30.070882298Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:35.085369191Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:33:35.117611466Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:33:35.117730899Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:33:35.119017855Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:35.119318617Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:35.119559511Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:35.119597399Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:33:35.119612608Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:33:35.119663735Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:33:35.119693753Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:33:35.121208165Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:33:35.121646203Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:40.136943901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:33:40.167758192Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:33:40.167850991Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:33:40.170253547Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:40.170801929Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:40.171285632Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:40.17140823Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:33:40.171808146Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:33:40.17183064Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:33:40.171989504Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:33:40.173444772Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:33:40.174253153Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:45.18778789Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:33:45.218092738Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:33:45.21819299Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:33:45.219186623Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:45.219400617Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:45.219547512Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:45.219575129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:33:45.219613999Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:33:45.219626776Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:33:45.219975502Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:33:50.241264962Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:33:50.272371326Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:33:50.272619526Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:33:55.288853871Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:33:55.318418387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:33:55.318521019Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:33:55.319576809Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:33:55.319794613Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:55.319975367Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:33:55.320021642Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:33:55.320037356Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:33:55.320095201Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:33:55.320599657Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:33:55.321195096Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:00.339129287Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:34:00.371456599Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:34:00.371560812Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:34:00.373298963Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:00.373565575Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:00.373832866Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:00.373860396Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:34:00.373911005Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:34:00.373925099Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:34:00.373961934Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:34:00.374438917Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:05.392267551Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:34:05.419754304Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:34:05.419867045Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:34:05.421088099Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:05.421305585Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:05.421478207Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:05.421501906Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:34:05.421526169Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:34:05.421540389Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:34:05.421568572Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:34:05.422854901Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:10.440039337Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:34:10.469015312Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:34:10.469132877Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:34:10.470263715Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:10.470535018Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:10.470708805Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:10.470740519Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:34:10.470756564Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:34:10.470784737Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:34:10.471019123Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:34:10.471538723Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:15.487746823Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:34:15.516757813Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:34:15.516944185Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:34:15.51899104Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:15.519580847Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:15.520090089Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:15.52027203Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:34:15.520289964Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:34:15.520303826Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:34:15.520341376Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:34:15.521546884Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:20.535713262Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:34:20.565425697Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:34:20.565518345Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:34:20.566595455Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:20.56676898Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:20.566976791Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:20.567015505Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:34:20.567030415Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:34:20.567043682Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:34:20.567698011Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:34:20.56815167Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:25.586062481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:34:25.615127289Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:34:25.615257686Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:34:25.616813554Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:25.61733487Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:25.617738552Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:25.61778751Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:34:25.617804248Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:34:25.617815867Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:34:25.61785506Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:34:25.61855154Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:30.634554704Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:34:30.665254536Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:34:30.66537503Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:34:30.666591428Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:30.666799329Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:30.66702825Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:30.667075007Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:34:30.667092517Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:34:30.667140798Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:34:30.667205463Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:34:30.66849878Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:35.684526098Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:34:35.713820755Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:34:35.713942508Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:34:35.715752991Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:35.716293218Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:35.716913482Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:35.717090552Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:34:35.71711142Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:34:35.717126843Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:34:35.717165835Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:34:35.718998756Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:40.736820802Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:34:40.775697404Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:34:40.775842881Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:34:40.777318263Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:40.777572604Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:40.777749766Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:40.777777554Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:34:40.777792379Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:34:40.777805476Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:34:40.778270805Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:34:40.778872846Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:45.794459782Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:34:45.82472184Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:34:45.82482827Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:34:45.826934426Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:45.827207402Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:45.827623145Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:45.827682813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:34:45.82770004Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:34:45.827713123Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:34:45.828182734Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:34:45.828684512Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:50.845172035Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:34:50.874897029Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:34:50.875004237Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:34:50.876201362Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:50.876590238Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:50.876792241Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:50.876831114Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:34:50.876916391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:34:50.87693256Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:34:50.877089715Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:34:50.877946814Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:55.892866714Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:34:55.924274935Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:34:55.924396179Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:34:55.925835781Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:34:55.926100768Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:55.926336916Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:34:55.926397125Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:34:55.926413721Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:34:55.926426892Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:34:55.926686628Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:34:55.927704679Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:00.945777673Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:35:00.97395287Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:35:00.974056094Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:35:00.977491905Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:00.97799932Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:00.978175502Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:00.978209683Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:35:00.97822498Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:35:00.97825106Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:35:00.978890118Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:05.994891601Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:35:06.030652271Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:35:06.030749602Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:35:06.031873041Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:06.032074839Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:06.032257058Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:06.032295435Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:35:06.032309222Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:35:06.032386639Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:35:06.032838109Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:35:11.050603737Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:35:11.0802625Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:35:11.080362051Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:35:11.08201302Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:11.0822304Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:11.082432182Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:11.082460267Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:35:11.082475701Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:35:11.082487855Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:35:11.082674584Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:35:11.084340042Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:16.102272812Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:35:16.132171325Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:35:16.132303966Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:35:16.133506988Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:16.133748493Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:16.13395355Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:16.133983637Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:35:16.134000915Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:35:16.134038889Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:35:16.134070004Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:35:21.15499545Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:35:21.186879505Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:35:21.186994001Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:35:21.18865733Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:21.189175415Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:21.189362598Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:21.189392882Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:35:21.189408807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:35:21.189436355Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:35:21.189501546Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:35:21.190742195Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:26.207303547Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:35:26.235146573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:35:26.235266297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:35:26.236276521Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:26.236657091Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:26.236884249Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:26.236936511Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:35:26.236953702Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:35:26.236966882Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:35:26.237319544Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:35:26.238327437Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:31.257444513Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:35:31.288809665Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:35:31.288906778Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:35:31.290745958Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:31.291290038Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:31.29180032Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:31.292045633Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:35:31.29206787Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:35:31.2920834Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:35:31.292121168Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:35:31.293995238Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:36.308403397Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:35:36.338126142Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:35:36.338230538Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:35:36.340095983Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:36.340314869Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:36.340630809Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:36.340663645Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:35:36.340679953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:35:36.340693304Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:35:36.340723925Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:35:36.341934876Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:35:36.342109833Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:41.359180838Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:35:41.388737569Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:35:41.388839885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:35:41.390112948Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:41.390400354Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:41.390557586Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:41.390580382Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:35:41.390594726Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:35:41.390608157Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:35:41.390634928Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:35:41.391759129Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:46.408961919Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:35:46.438178113Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:35:46.438303763Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:35:46.440852449Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:46.441078389Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:46.441272689Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:46.441317466Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:35:46.441334793Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:35:46.441349098Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:35:46.441652772Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:35:46.442533334Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:51.465282508Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:35:51.493130075Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:35:51.493229283Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:35:51.495349308Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:51.495566624Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:51.495821924Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:51.495851326Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:35:51.495866634Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:35:51.495877319Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:35:51.495908291Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:35:51.496913478Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:56.512886581Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:35:56.541889262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:35:56.541996359Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:35:56.54298848Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:35:56.543143701Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:56.543310029Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:35:56.543334784Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:35:56.54334901Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:35:56.54336164Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:35:56.543625245Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:01.605874124Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:36:01.712731838Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:36:01.712873063Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:36:01.737704712Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:01.740790049Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:01.741053131Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:01.741111613Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:36:01.741128481Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:36:01.74114287Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:36:01.74138758Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:36:01.742285042Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:36:01.743278121Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:06.781876786Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:36:06.813680288Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:36:06.813802079Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:36:06.816194709Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:06.816835209Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:06.817002923Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:06.817055062Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:36:06.817071344Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:36:06.81749551Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:36:06.817864267Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:36:06.818850599Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:36:06.819511306Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:11.838016171Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:36:11.865444667Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:36:11.865557607Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:36:11.869445824Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:11.869733436Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:11.870014384Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:11.870077263Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:36:11.87009232Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:36:11.870105606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:36:11.870514802Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:36:11.87173787Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:16.886411632Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:36:16.91539608Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:36:16.91549819Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:36:16.917217475Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:16.917681525Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:16.917872194Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:16.917919629Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:36:16.917935909Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:36:16.917949296Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:36:16.918098135Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:36:16.91855474Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:21.940289189Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:36:21.969582096Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:36:21.969704471Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:36:21.970791287Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:21.970957244Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:21.971091318Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:21.971114268Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:36:21.971128824Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:36:21.971142304Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:36:21.971429657Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:26.985662028Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:36:27.014740685Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:36:27.014838626Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:36:27.015928399Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:27.016144714Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:27.016344092Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:27.016418363Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:36:27.016551001Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:36:27.016565197Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:36:27.016602343Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:36:27.01733225Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:32.034091888Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:36:32.062056592Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:36:32.062156363Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:36:32.06331103Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:32.063506328Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:32.063684287Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:32.063714783Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:36:32.063728449Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:36:32.063763235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:36:32.063943295Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:36:32.064674199Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:37.080291062Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:36:37.112042891Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:36:37.112155833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:36:37.113792473Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:37.114253237Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:37.114509076Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:37.114541304Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:36:37.11455675Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:36:37.114568689Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:36:37.11461107Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:36:37.115608143Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:42.134283505Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:36:42.161196019Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:36:42.161322515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:36:42.162830367Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:42.163343801Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:42.164004188Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:42.16407858Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:36:42.164095106Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:36:42.164147958Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:36:42.164611685Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:47.181460256Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:36:47.21372748Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:36:47.213821557Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:36:47.214978804Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:47.215264991Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:47.215552754Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:47.215583485Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:36:47.215598399Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:36:47.215612935Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:36:47.215643824Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:36:47.217335747Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:52.235872136Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:36:52.265536121Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:36:52.26563793Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:36:52.268054474Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:52.268263693Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:52.268643487Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:52.268679903Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:36:52.26869556Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:36:52.268708919Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:36:52.269024707Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:57.284934462Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:36:57.313170328Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:36:57.313297174Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:36:57.314351682Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:36:57.314558638Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:57.314716697Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:36:57.314756434Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:36:57.31477131Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:36:57.314783849Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:36:57.315150879Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:36:57.31570287Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:02.335263956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:37:02.364068477Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:37:02.364181436Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:37:02.36556573Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:02.365837536Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:02.366009031Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:02.366048746Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:37:02.366065278Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:37:02.366121044Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:37:02.366271895Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:37:02.367341216Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:07.386213489Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:37:07.415025447Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:37:07.415128722Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:37:07.417052956Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:07.417534402Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:07.417794197Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:07.417835778Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:37:07.417850348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:37:07.417880353Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:37:07.418280793Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:37:07.419171131Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:12.433329406Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:37:12.464777642Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:37:12.46488551Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:37:12.46718154Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:12.467501214Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:12.467717389Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:12.467747338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:37:12.46776199Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:37:12.468029581Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:37:12.468265456Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:37:12.4687182Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:17.484971511Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:37:17.515183953Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:37:17.515318914Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:37:17.516380521Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:17.516669284Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:17.51681331Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:17.516865902Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:37:17.51688317Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:37:17.516896436Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:37:17.517264071Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:37:17.517933147Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:22.534433311Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:37:22.563440166Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:37:22.56353846Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:37:22.564716451Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:22.565020496Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:22.565212235Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:22.565254684Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:37:22.565271286Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:37:22.565282596Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:37:22.565509852Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:37:22.565921369Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:27.583434076Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:37:27.610142988Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:37:27.610255994Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:37:27.611269583Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:27.611505442Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:27.611691278Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:27.611717397Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:37:27.611732212Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:37:27.611746778Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:37:27.611774919Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:37:27.612710124Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:32.63146667Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:37:32.663023639Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:37:32.663136928Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:37:32.664207299Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:32.664483843Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:32.664702398Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:32.664746947Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:37:32.664764291Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:37:32.664778133Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:37:32.665510259Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:37.681813372Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:37:37.71063451Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:37:37.71074424Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:37:37.712578092Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:37.712871499Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:37.713090456Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:37.713124769Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:37:37.713139342Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:37:37.71315104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:37:37.713351474Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:37:37.714284675Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:42.734174595Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:37:42.7635027Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:37:42.763601654Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:37:42.76717618Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:42.76751933Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:42.767759929Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:42.767793487Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:37:42.767807883Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:37:42.767836205Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:37:42.767915125Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:37:42.768792875Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:47.785128855Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:37:47.814645845Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:37:47.814777252Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:37:47.817108059Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:47.817715048Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:47.81817735Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:47.818449616Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:37:47.818479056Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:37:47.81849243Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:37:47.818665784Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:37:47.819160003Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:52.839463148Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:37:52.867363387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:37:52.867461146Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:37:52.868525904Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:52.868735793Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:52.868893926Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:52.868921226Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:37:52.868936252Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:37:52.868948842Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:37:52.868976981Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:37:52.869944364Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:57.886086947Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:37:57.917801525Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:37:57.91791531Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:37:57.919032033Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:37:57.919307191Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:57.919521843Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:37:57.919559884Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:37:57.919573735Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:37:57.919585914Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:37:57.920265096Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:37:57.920302591Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:02.941280385Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:38:02.96952236Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:38:02.969633937Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:38:02.971146614Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:02.971656405Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:02.971814481Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:02.971844632Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:38:02.971878023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:38:02.971892783Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:38:02.972391921Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:38:02.973739484Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:07.989403145Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:38:08.019650818Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:38:08.019774466Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:38:08.021047873Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:08.021348312Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:08.021591135Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:08.021631871Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:38:08.021658546Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:38:08.021715284Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:38:08.021751069Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:38:08.023000599Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:38:08.023114952Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:13.044448501Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:38:13.073597055Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:38:13.073734417Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:38:13.074824133Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:13.075066784Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:13.0752967Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:13.075319183Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:38:13.075332306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:38:13.075363082Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:38:13.075401037Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:38:13.076923137Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:18.09399169Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:38:18.123766201Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:38:18.123940335Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:38:18.125073264Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:18.125317515Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:18.125498579Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:18.125538537Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:38:18.125553575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:38:18.125566596Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:38:18.126354487Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:23.146319717Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:38:23.175049385Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:38:23.175156549Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:38:23.176684947Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:23.176936227Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:23.177101039Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:23.177132815Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:38:23.177149547Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:38:23.177163687Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:38:23.17751318Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:28.195953493Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:38:28.226603556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:38:28.22669822Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:38:28.227877005Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:28.228103082Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:28.2282951Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:28.228335417Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:38:28.228349584Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:38:28.228420307Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:38:28.228909529Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:38:28.2299699Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:33.246299462Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:38:33.275886311Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:38:33.275999679Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:38:33.277165406Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:33.277365455Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:33.277509897Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:33.277538855Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:38:33.277554849Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:38:33.277568735Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:38:33.278288249Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:38.295323955Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:38:38.324342656Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:38:38.324538419Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:38:38.326132825Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:38.32635954Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:38.326510126Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:38.326549873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:38:38.326564548Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:38:38.326616548Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:38:38.327219163Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:38:38.327629358Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:43.347537115Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:38:43.379453069Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:38:43.37956515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:38:43.380776395Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:43.380963173Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:43.38111788Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:43.38114046Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:38:43.381155216Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:38:43.381168598Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:38:43.381196044Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:38:43.38201919Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:48.401297321Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:38:48.430970605Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:38:48.431088224Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:38:48.432122192Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:48.43232664Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:48.432635774Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:48.432679483Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:38:48.432695506Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:38:48.432709291Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:38:48.433383575Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:53.451183458Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:38:53.483839732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:38:53.483932519Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:38:53.485417865Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:53.485667113Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:53.485828871Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:53.485869005Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:38:53.485884123Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:38:53.485897655Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:38:53.486263439Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:38:53.486996779Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:58.502623482Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:38:58.534226555Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:38:58.534360742Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:38:58.536085801Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:38:58.536774408Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:58.537289911Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:38:58.537324053Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:38:58.537340095Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:38:58.537353948Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:38:58.537385466Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:38:58.538889512Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:38:58.539425236Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:03.555641525Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:39:03.586578555Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:39:03.586681926Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:39:03.58884072Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:03.589395397Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:03.590705997Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:03.590738826Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:39:03.590754317Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:39:03.590767979Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:39:03.591210144Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:39:03.59193133Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:08.608006527Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:39:08.635618791Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:39:08.635733532Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:39:08.637561977Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:08.638064041Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:08.638553197Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:08.638676352Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:39:08.638701569Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:39:08.638731727Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:39:08.638773312Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:39:08.640091029Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:13.658382459Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:39:13.687705786Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:39:13.687827535Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:39:13.689128737Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:13.689357816Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:13.689503189Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:13.689527493Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:39:13.689542696Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:39:13.689606164Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:39:13.68964218Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:39:13.690977154Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:18.707228906Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:39:18.737116345Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:39:18.737265498Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:39:18.739130448Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:18.73936661Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:18.739542417Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:18.739573874Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:39:18.739589741Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:39:18.739626067Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:39:18.739767411Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:39:18.740751402Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:23.761186088Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:39:23.792805996Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:39:23.792934231Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:39:23.794195293Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:23.794451442Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:23.794681222Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:23.794720731Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:39:23.794737105Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:39:23.794750356Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:39:23.795180968Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:39:23.796069985Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:39:23.796570203Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:28.815998985Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:39:28.845768812Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:39:28.845860506Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:39:28.84727705Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:28.847767928Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:28.848192339Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:28.848221873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:39:28.848247494Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:39:28.848260625Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:39:28.8487471Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:39:28.849618904Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:33.864406854Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:39:33.894373934Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:39:33.894486743Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:39:33.895606835Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:33.895803887Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:33.895963145Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:33.895991535Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:39:33.896006036Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:39:33.896034296Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:39:33.896150762Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:39:33.897087525Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:38.911232196Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:39:38.94110282Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:39:38.941197889Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:39:38.942305403Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:38.942545839Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:38.942807105Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:38.942837192Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:39:38.942851161Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:39:38.94286229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:39:38.94290349Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:39:38.943891287Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:43.961309815Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:39:43.991060977Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:39:43.99117168Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:39:43.993128672Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:43.993484936Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:43.994027033Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:43.994061389Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:39:43.994077137Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:39:43.994090449Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:39:43.994515336Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:39:43.994531327Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:49.012866326Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:39:49.040895386Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:39:49.04105813Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:39:49.042076985Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:49.04228575Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:49.04246487Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:49.042488338Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:39:49.042503312Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:39:49.042537716Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:39:49.042567946Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:39:49.043776191Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:54.065344035Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:39:54.094228501Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:39:54.094356836Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:39:54.09568199Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:54.096123203Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:54.096705339Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:54.096946408Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:39:54.09713497Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:39:54.09761317Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:39:54.097666492Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:39:54.098655261Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:59.113310399Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:39:59.143404385Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:39:59.143508999Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:39:59.14496212Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:39:59.14526235Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:59.145474983Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:39:59.145505972Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:39:59.145522262Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:39:59.145535913Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:39:59.14559484Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:39:59.146346356Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:04.163511224Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:40:04.192153084Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:40:04.192326561Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:40:04.193795214Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:04.193996866Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:04.194164422Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:04.194203678Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:40:04.194220575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:40:04.194572169Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:40:04.194665853Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:40:04.195162521Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:09.211318101Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:40:09.239882923Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:40:09.239992758Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:40:09.241890128Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:09.242431965Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:09.242879867Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:09.243031961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:40:09.243051661Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:40:09.243065106Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:40:09.243110007Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:40:09.244942526Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:40:09.245594753Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:14.259339987Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:40:14.291411833Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:40:14.2915307Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:40:14.293409133Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:14.293958169Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:14.294106568Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:14.294129522Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:40:14.294144579Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:40:14.294158891Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:40:14.294676019Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:40:14.295722657Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:19.318424092Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:40:19.346205955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:40:19.346321544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:40:19.347542337Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:19.347779916Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:19.347958558Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:19.347988405Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:40:19.34800307Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:40:19.348037438Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:40:19.348264972Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:40:19.348708616Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:24.367741439Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:40:24.397176466Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:40:24.397365844Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:40:24.398945369Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:24.399534128Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:24.399912402Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:24.399964931Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:40:24.399981157Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:40:24.400328298Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:40:24.40036093Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:40:24.401575449Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:29.415775768Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:40:29.445368595Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:40:29.445469594Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:40:29.446520918Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:29.44674358Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:29.446918712Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:29.446970198Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:40:29.446987257Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:40:29.447044146Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:40:29.447265689Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:40:29.447615145Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:34.469286584Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:40:34.497681385Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:40:34.497798742Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:40:34.500140336Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:34.500411117Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:34.50080423Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:34.500843249Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:40:34.500861028Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:40:34.500873842Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:40:34.501268053Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:40:34.502017665Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:39.521293168Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:40:39.550438397Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:40:39.550532962Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:40:39.552151031Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:39.552777473Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:39.553288621Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:39.553322724Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:40:39.553337581Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:40:39.553378934Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:40:39.553687267Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:44.574355208Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:40:44.604604512Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:40:44.604726267Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:40:44.606289622Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:44.606780608Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:44.607205427Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:44.607425777Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:40:44.607449449Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:40:44.607463953Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:40:44.607640522Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:40:44.609227931Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:49.626421611Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:40:49.655394387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:40:49.655488714Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:40:49.658006833Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:49.658273009Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:49.658508933Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:49.658552667Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:40:49.658568325Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:40:49.658579483Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:40:49.659173894Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:40:49.659270158Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:54.679328433Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:40:54.709171172Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:40:54.709298225Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:40:54.711078569Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:54.711598723Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:54.711757759Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:54.711785237Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:40:54.711799551Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:40:54.711813112Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:40:54.712075861Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:59.728053698Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:40:59.756976443Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:40:59.757080787Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:40:59.758573632Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:40:59.758969835Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:59.759433668Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:40:59.759469929Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:40:59.75948561Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:40:59.759530751Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:40:59.759905287Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:40:59.760299294Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:04.775152882Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:41:04.80526572Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:41:04.805372547Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:41:04.808026592Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:04.808420237Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:04.808964678Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:04.808997966Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:41:04.809013452Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:41:04.809026887Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:41:04.809067356Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:41:04.810548243Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:09.828321694Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:41:09.855220266Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:41:09.855341687Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:41:09.857226092Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:09.857827239Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:09.858338028Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:09.858545102Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:41:09.858568439Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:41:09.858606285Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:41:09.858646317Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:41:09.860257315Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:41:09.860436747Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:14.876993617Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:41:14.906991686Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:41:14.907103772Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:41:14.910491812Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:14.910806522Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:14.9111099Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:14.911145165Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:41:14.911159516Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:41:14.911202545Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:41:14.911622528Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:19.928295901Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:41:19.960256227Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:41:19.960351898Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:41:19.961636647Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:19.961812401Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:19.961958661Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:19.961982544Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:41:19.961997743Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:41:19.962010921Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:41:19.96232818Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:24.979126157Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:41:25.008331085Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:41:25.008649468Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:41:25.0101634Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:25.01073332Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:25.011203874Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:25.011317129Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:41:25.011336181Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:41:25.011382622Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:41:25.011428631Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:41:25.012908657Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:41:25.013721866Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:30.028640743Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:41:30.059137663Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:41:30.059278931Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:41:30.061984238Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:30.062317102Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:30.062879348Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:30.062919721Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:41:30.062935968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:41:30.062949791Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:41:30.063295671Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:35.079371928Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:41:35.110010111Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:41:35.110107515Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:41:35.113429785Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:35.11365433Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:35.113840325Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:35.1138711Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:41:35.113888467Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:41:35.113901272Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:41:35.114311086Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:41:35.114920381Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:40.134666303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:41:40.164948291Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:41:40.16505897Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:41:40.166158001Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:40.166404477Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:40.166567271Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:40.166599234Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:41:40.166614418Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:41:40.166988039Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:41:40.16701974Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:41:40.168117915Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:45.184302427Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:41:45.213895921Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:41:45.213990612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:41:45.215571683Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:45.216013015Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:45.217461319Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:45.217514319Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:41:45.217529875Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:41:45.217543903Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:41:45.218179077Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:50.234908205Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:41:50.263321286Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:41:50.263430421Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:41:50.264609253Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:50.264807407Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:50.264957545Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:50.264984927Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:41:50.264999526Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:41:50.265012978Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:41:50.265749999Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:55.281302679Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:41:55.310884076Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:41:55.311005297Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:41:55.313115929Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:41:55.313602002Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:55.313979322Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:41:55.314011398Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:41:55.314026842Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:41:55.314039648Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:41:55.314758052Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:00.332300754Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:42:00.361787506Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:42:00.361881461Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:42:00.363669133Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:00.36422929Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:00.364808267Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:00.365042987Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:42:00.365065297Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:42:00.36508026Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:42:00.365128334Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:42:00.367158026Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:05.38210458Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:42:05.410123629Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:42:05.410266599Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:42:05.411321381Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:05.411511067Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:05.411657315Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:05.411680928Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:42:05.411696326Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:42:05.411710262Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:42:05.412002038Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:10.43026434Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:42:10.459693003Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:42:10.459811018Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:42:10.46299319Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:10.463202832Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:10.463416949Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:10.463449732Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:42:10.463464182Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:42:10.463478941Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:42:10.463765419Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:42:10.464706026Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:15.477824001Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:42:15.50907904Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:42:15.509174338Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:42:15.511148324Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:15.511717605Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:15.51219382Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:15.512567851Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:42:15.512599608Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:42:15.512651406Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:42:15.512707652Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:42:15.514187458Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:42:15.514978257Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:20.534301971Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:42:20.56454577Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:42:20.564661885Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:42:20.567162305Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:20.567390762Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:20.567568938Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:20.567603421Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:42:20.567620932Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:42:20.567634629Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:42:20.56785494Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:42:20.568379071Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:25.584602995Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:42:25.612601324Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:42:25.612712542Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:42:25.613842608Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:25.614126487Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:25.614332561Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:25.614378341Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:42:25.614393555Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:42:25.61440677Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:42:25.614816398Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:42:25.615813967Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:30.631882299Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:42:30.662219482Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:42:30.662325475Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:42:30.663310702Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:30.663552906Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:30.663757333Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:30.663797915Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:42:30.663813663Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:42:30.663828031Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:42:30.66463513Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:35.681458745Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:42:35.709506989Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:42:35.709620443Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:42:35.710621292Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:35.710785068Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:35.710918679Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:35.710941523Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:42:35.710955649Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:42:35.710969775Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:42:35.711222071Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:40.727950534Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:42:40.756639527Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:42:40.75674679Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:42:40.757901109Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:40.758100447Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:40.758252798Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:40.758281366Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:42:40.758296601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:42:40.758306922Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:42:40.758698154Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:42:40.759357069Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:45.775303504Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:42:45.802728839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:42:45.802831873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:42:45.804324124Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:45.80478339Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:45.804991115Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:45.805020527Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:42:45.805035929Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:42:45.805047606Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:42:45.805085156Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:42:45.806314593Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:50.826788652Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:42:50.854758326Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:42:50.854871998Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:42:50.855974362Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:50.856210377Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:50.856518942Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:50.856559187Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:42:50.856574147Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:42:50.856585341Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:42:50.856954621Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:42:50.857860325Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:55.873385486Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:42:55.907583802Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:42:55.907693672Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:42:55.910158973Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:42:55.910416475Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:55.910709707Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:42:55.910740418Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:42:55.910755105Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:42:55.910792566Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:42:55.911134262Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:42:55.911810826Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:00.926783532Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:43:00.953103311Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:43:00.953221337Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:43:00.954354721Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:00.954568097Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:00.954716261Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:00.954755243Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:43:00.954786214Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:43:00.955121038Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:43:00.955192292Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:43:00.955694168Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:05.969163076Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:43:05.998687113Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:43:05.998817018Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:43:05.999908273Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:06.000117815Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:06.000305643Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:06.00033165Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:43:06.000346632Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:43:06.000359467Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:43:06.000813118Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:11.018184868Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:43:11.047161359Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:43:11.047299791Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:43:11.048398107Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:11.048793238Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:11.048951927Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:11.04898375Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:43:11.049000323Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:43:11.049014609Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:43:11.049312272Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:16.065106863Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:43:16.095005488Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:43:16.095099767Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:43:21.116270616Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:43:21.146201656Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:43:21.146334031Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:43:21.147435911Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:21.147634914Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:21.147792355Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:21.147819963Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:43:21.147834804Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:43:21.147848194Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:43:21.147876172Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:43:21.148939168Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:26.165286227Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:43:26.194636617Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:43:26.19473428Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:43:26.196402516Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:26.196672048Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:26.197341518Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:26.19737937Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:43:26.197396215Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:43:26.197410036Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:43:26.1974432Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:43:26.198175367Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:31.216289198Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:43:31.245096845Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:43:31.245218662Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:43:31.246327908Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:31.246540843Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:31.24673141Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:31.246772712Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:43:31.246787434Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:43:31.246801741Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:43:31.247301196Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:43:31.248333742Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:36.263646268Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:43:36.295685338Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:43:36.295777063Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:43:36.297334905Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:36.297793763Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:36.297995849Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:36.298024078Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:43:36.298040641Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:43:36.298053668Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:43:36.298083332Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:43:36.298818Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:41.32229991Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:43:41.352464731Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:43:41.352610862Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:43:41.354156822Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:41.35466242Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:41.354866305Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:41.354897418Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:43:41.354912301Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:43:41.354925249Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:43:41.355115358Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:43:41.35622664Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:46.373291558Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:43:46.403577955Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:43:46.403687419Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:43:46.406172489Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:46.406447812Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:46.406689915Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:46.406722165Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:43:46.40673823Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:43:46.406752035Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:43:46.406781912Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:43:46.407786232Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:51.425590447Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:43:51.454211944Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:43:51.454322995Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:43:51.457353157Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:51.457684503Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:51.458020622Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:51.458071178Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:43:51.458088968Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:43:51.45813428Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:43:51.458171613Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:43:51.45857391Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:56.47279033Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:43:56.503403796Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:43:56.503498306Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:43:56.506093555Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:43:56.506640971Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:56.507078037Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:43:56.507256931Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:43:56.507310421Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:43:56.507324895Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:43:56.507362514Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:43:56.508631934Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:43:56.509510757Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:01.52467876Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:44:01.558831544Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:44:01.55892473Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:44:01.560295749Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:01.561644711Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:01.562117505Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:01.562148485Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:44:01.56216323Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:44:01.562176827Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:44:01.562215016Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:44:01.563706306Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:06.578255034Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:44:06.610701361Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:44:06.610812047Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:44:06.612111957Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:06.612386143Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:06.612700966Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:06.61274943Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:44:06.6127662Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:44:06.612821839Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:44:06.613643965Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:11.636088303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:44:11.667803135Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:44:11.667921243Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:44:11.669188402Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:11.669422584Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:11.669598856Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:11.66967148Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:44:11.66974755Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:44:11.66976241Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:44:11.669999107Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:44:11.67074304Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:16.688270377Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:44:16.716928895Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:44:16.71703634Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:44:21.737222047Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:44:21.768710128Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:44:21.768825695Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:44:21.770426124Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:21.770959752Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:21.771383556Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:21.771415739Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:44:21.77143096Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:44:21.771443664Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:44:21.771720815Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:26.788277392Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:44:26.818261969Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:44:26.818374877Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:44:26.819728822Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:26.820050111Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:26.820332091Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:26.820377318Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:44:26.820393143Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:44:26.820798101Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:44:26.820842294Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:44:26.821975614Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:31.842325956Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:44:31.8726975Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:44:31.872826213Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:44:31.8744989Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:31.875199037Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:31.875495968Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:31.875548069Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:44:31.875564623Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:44:31.875577229Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:44:31.876044958Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:44:31.877683367Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:44:31.878036513Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:36.893082243Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:44:36.924467387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:44:36.924612385Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:44:36.925773819Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:36.925990134Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:36.92616466Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:36.926197432Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:44:36.926213189Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:44:36.926226366Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:44:36.926409299Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:44:36.926831402Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:41.943385529Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:44:41.972555697Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:44:41.972660046Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:44:46.991926081Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:44:47.02276488Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:44:47.022892301Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:44:47.024703471Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:47.025288581Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:47.025573537Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:47.025618549Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:44:47.025634577Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:44:47.02564876Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:44:47.025690485Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:44:47.02713941Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:44:47.027366249Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:52.047118028Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:44:52.075990368Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:44:52.076101625Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:44:52.079865014Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:52.080757928Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:52.081026076Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:52.081083403Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:44:52.081100048Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:44:52.081177374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:44:52.081664799Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:57.100345608Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:44:57.13018411Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:44:57.130322895Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:44:57.131474126Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:44:57.131683687Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:57.131864877Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:44:57.131891103Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:44:57.131905906Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:44:57.131919825Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:44:57.131948701Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:44:57.132845508Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:02.157958013Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:45:02.244141799Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:45:02.244267082Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:45:02.246180802Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:02.246461656Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:02.246657004Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:02.246716624Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:45:02.24673205Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:45:02.246753744Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:45:02.246790819Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:45:02.247622922Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:07.265817176Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:45:07.295927095Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:45:07.296020175Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:45:07.297824973Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:07.298268423Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:07.298689773Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:07.298722508Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:45:07.298737441Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:45:07.298752111Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:45:07.298914576Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:45:12.316612633Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:45:12.345859858Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:45:12.345998743Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:45:12.347157871Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:12.34742366Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:12.347629834Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:12.347653199Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:45:12.347667807Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:45:12.347681734Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:45:12.347710548Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:45:12.349000122Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:45:12.349158915Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:17.36434713Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:45:17.395186761Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:45:17.395307167Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:45:17.397231546Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:17.397829477Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:17.398310825Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:17.39853197Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:45:17.398555133Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:45:17.398593872Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:45:17.398632691Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:45:17.400381472Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:45:17.400777528Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:22.419082227Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:45:22.446088377Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:45:22.446206467Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:45:22.447278265Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:22.447559586Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:22.447735637Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:22.447776746Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:45:22.447791965Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:45:22.447804909Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:45:22.448660402Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:27.466263855Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:45:27.497279784Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:45:27.497408894Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:45:27.499450711Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:27.500054855Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:27.500764903Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:27.501048386Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:45:27.501070977Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:45:27.501086235Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:45:27.501127765Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:45:27.502863585Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:45:27.503354224Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:32.521005076Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:45:32.550527006Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:45:32.55062588Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:45:32.55209364Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:32.552593527Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:32.552929772Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:32.552972855Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:45:32.552988663Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:45:32.553002145Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:45:32.553376912Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:45:32.554147978Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:37.57173021Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:45:37.602549573Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:45:37.602665537Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:45:37.605355412Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:37.605605381Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:37.605765903Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:37.605797005Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:45:37.605811982Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:45:37.605848466Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:45:37.606133278Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:42.627288757Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:45:42.655228064Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:45:42.655363065Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:45:42.656846196Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:42.657331805Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:42.657662162Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:42.6576917Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:45:42.657706789Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:45:42.657731973Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:45:42.658167939Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:47.672870154Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:45:47.703798909Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:45:47.703918183Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:45:47.707008049Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:47.707218778Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:47.707421797Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:47.707461974Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:45:47.707477286Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:45:47.707490758Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:45:47.707775242Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:45:47.708161334Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:52.726410454Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:45:52.755756785Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:45:52.756261535Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:45:52.758423809Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:52.758785288Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:52.758978573Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:52.7590113Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:45:52.759028327Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:45:52.759041823Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:45:52.759204381Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:45:52.759544008Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:57.775430699Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:45:57.807175296Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:45:57.807283189Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:45:57.808735769Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:45:57.809117998Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:57.809284953Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:45:57.809315049Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:45:57.809329407Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:45:57.809373732Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:45:57.809512785Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:45:57.810541875Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:02.827271144Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:46:02.856000928Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:46:02.856108947Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:46:02.858097911Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:02.858669102Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:02.859093261Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:02.85912295Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:46:02.859138019Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:46:02.859151443Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:46:02.859185441Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:46:02.860737367Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:07.874763355Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:46:07.904490196Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:46:07.904589024Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:46:07.906466929Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:07.906771996Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:07.907055098Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:07.907098201Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:46:07.907115347Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:46:07.907128163Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:46:07.907894582Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:12.925541743Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:46:12.95581594Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:46:12.955937345Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:46:12.957770493Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:12.958023505Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:12.9582477Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:12.958270961Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:46:12.958284491Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:46:12.958295464Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:46:12.958328642Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:46:12.959130727Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:17.975817878Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:46:18.006266747Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:46:18.00639153Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:46:18.008145562Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:18.008737573Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:18.009199959Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:18.009259891Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:46:18.009277557Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:46:18.00929138Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:46:18.009468113Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:46:18.011165791Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:46:18.011586452Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:23.034275544Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:46:23.064841374Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:46:23.064951295Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:46:23.066601061Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:23.06718983Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:23.067654349Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:23.067705837Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:46:23.067722996Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:46:23.067920104Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:46:23.068282815Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:46:23.069500378Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:28.084182925Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:46:28.113779924Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:46:28.113892898Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:46:28.117215577Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:28.117500642Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:28.117800344Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:28.117830063Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:46:28.11786757Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:46:28.11787793Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:46:28.117910576Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:46:28.118336379Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:33.136041319Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:46:33.165272453Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:46:33.165367833Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:46:33.167155018Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:33.167546781Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:33.167691011Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:33.167714819Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:46:33.167729669Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:46:33.167742844Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:46:33.168201348Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:38.181877125Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:46:38.211635548Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:46:38.211746624Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:46:38.214038177Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:38.214293989Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:38.214499876Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:38.214538855Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:46:38.214556218Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:46:38.214614945Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:46:38.21480691Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:46:38.21627626Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:43.23427045Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:46:43.262733331Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:46:43.262847085Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:46:43.265554967Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:43.265766093Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:43.265933017Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:43.265978727Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:46:43.265993302Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:46:43.266006084Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:46:43.266137359Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:46:48.284421248Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:46:48.315330972Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:46:48.315451842Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:46:48.31703604Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:48.317422302Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:48.317571108Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:48.317595007Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:46:48.317610297Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:46:48.317624747Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:46:48.318092717Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:46:48.318265497Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:53.339339632Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:46:53.370526734Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:46:53.370656303Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:46:53.372159849Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:53.372587839Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:53.37275678Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:53.373156977Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:46:53.373180415Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:46:53.373194529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:46:53.373282013Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:46:53.374059498Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:58.392771639Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:46:58.421723112Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:46:58.421842236Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:46:58.423000121Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:46:58.423224904Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:58.423459092Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:46:58.423496933Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:46:58.42352592Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:46:58.424028024Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:46:58.424129868Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:46:58.424402063Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:03.442151083Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:47:03.473685831Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:47:03.473814815Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:47:03.475108151Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:03.475646887Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:03.475917377Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:03.47594074Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:47:03.475954403Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:47:03.475983603Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:47:03.476014651Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:47:03.477746119Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:08.489639098Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:47:08.520364105Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:47:08.520534187Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:47:08.521579283Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:08.521780069Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:08.521934849Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:08.521967546Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:47:08.521980498Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:47:08.521992804Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:47:08.522331652Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:13.536890239Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:47:13.566709696Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:47:13.566825152Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:47:13.568329042Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:13.56866622Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:13.568851187Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:13.568897797Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:47:13.568938023Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:47:13.568967847Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:47:13.568998825Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:47:13.569556121Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:18.586298604Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:47:18.615115036Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:47:18.615216121Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:47:18.617220608Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:18.617718639Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:18.618134083Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:18.618166849Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:47:18.618182667Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:47:18.618195793Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:47:18.618557984Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:23.637486854Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:47:23.667982568Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:47:23.668072517Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:47:23.669329086Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:23.669558034Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:23.669775097Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:23.669813965Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:47:23.669829116Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:47:23.669843717Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:47:23.670197771Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:47:23.671432233Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:47:23.671590988Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:28.685608042Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:47:28.716020921Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:47:28.716111544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:47:28.717276574Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:28.717529584Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:28.717739897Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:28.717772938Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:47:28.717790464Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:47:28.717803068Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:47:28.718217292Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:47:28.718826453Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:33.73628271Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:47:33.764708331Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:47:33.764831378Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:47:33.766086865Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:33.766381208Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:33.766562973Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:33.766592887Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:47:33.766606657Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:47:33.766618582Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:47:33.766785729Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:47:33.767507856Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:38.785282699Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:47:38.815213284Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:47:38.815318401Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:47:38.817125663Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:38.81733913Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:38.817503663Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:38.817546336Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:47:38.817563142Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:47:38.817577413Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:47:38.818030195Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:47:38.818782399Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:43.837577801Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:47:43.867189457Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:47:43.867298837Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:47:43.868562002Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:43.868836681Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:43.86907738Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:43.869106249Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:47:43.869121261Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:47:43.869133928Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:47:43.869166007Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:47:43.870116011Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:47:43.870720426Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:48.886033164Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:47:48.914883434Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:47:48.914991561Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:47:48.916066266Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:48.916372134Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:48.916765068Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:48.916794214Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:47:48.916809316Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:47:48.916821252Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:47:48.916854825Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:47:48.918163452Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:53.934353008Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:47:53.965213869Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:47:53.965326259Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:47:53.966536854Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:53.966803225Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:53.967031646Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:53.967067446Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:47:53.967083043Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:47:53.967096386Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:47:53.967125195Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:47:53.967546654Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:58.990436114Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:47:59.021781068Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:47:59.021908027Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:47:59.023587209Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:47:59.024141741Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:59.024749014Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:47:59.024785906Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:47:59.024801773Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:47:59.024828496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:47:59.025299738Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:47:59.025742374Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:04.045289403Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:48:04.076400556Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:48:04.07659547Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:48:04.077728543Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:04.077946264Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:04.07815864Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:04.078199828Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:48:04.078215132Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:48:04.078228304Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:48:04.078683629Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:48:04.079417507Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:09.097061028Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:48:09.129383314Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:48:09.129506045Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:48:09.130570928Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:09.130769978Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:09.130921626Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:09.130949147Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:48:09.130964507Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:48:09.13097737Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:48:09.131015986Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:48:09.131798688Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:14.148287273Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:48:14.176824732Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:48:14.176934017Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:48:14.178419807Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:14.178780287Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:14.179082881Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:14.179111333Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:48:14.179157348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:48:14.179170337Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:48:14.179559534Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:48:14.180051032Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:19.200306006Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:48:19.23100002Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:48:19.231113617Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:48:19.232204959Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:19.232586415Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:19.232778272Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:19.232807514Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:48:19.232822391Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:48:19.232833793Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:48:19.233078686Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:48:19.233597987Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:24.253600546Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:48:24.283336046Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:48:24.283456444Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:48:24.284747864Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:24.284979436Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:24.285162328Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:24.285195451Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:48:24.285211734Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:48:24.285225086Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:48:24.285596637Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:48:24.286504089Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:48:24.286867969Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:29.301778579Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:48:29.332253668Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:48:29.332353041Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:48:29.334309696Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:29.334738716Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:29.334886988Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:29.334910275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:48:29.334925214Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:48:29.334938667Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:48:29.33541724Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:34.351025512Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:48:34.381159785Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:48:34.381290969Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:48:34.382405863Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:34.382581888Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:34.382716335Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:34.382743724Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:48:34.382758353Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:48:34.382771745Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:48:34.383144614Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:48:34.383585228Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:39.40012433Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:48:39.431147364Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:48:39.431268903Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:48:39.432379638Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:39.432803854Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:39.433018725Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:39.43304967Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:48:39.433064578Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:48:39.433076201Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:48:39.433109125Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:48:39.43363671Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:44.453566834Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:48:44.483683636Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:48:44.483786286Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:48:44.484984102Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:44.485154896Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:44.485331443Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:44.485356304Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:48:44.48537171Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:48:44.485384824Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:48:44.485651927Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:49.501001927Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:48:49.531108496Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:48:49.531199754Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:48:49.532925632Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:49.533431285Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:49.533831853Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:49.533866362Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:48:49.533882295Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:48:49.533895803Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:48:49.533927739Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:48:49.534689245Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:54.55130309Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:48:54.579464131Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:48:54.579832614Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:48:54.581164973Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:54.581726418Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:54.582176116Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:54.582270246Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:48:54.582287602Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:48:54.582302186Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:48:54.58233599Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:48:54.584771999Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:59.598940919Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:48:59.629577687Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:48:59.629692113Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:48:59.630779388Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:48:59.631028746Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:59.631212048Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:48:59.631254372Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:48:59.631270601Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:48:59.631299602Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:48:59.631562791Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:48:59.632023802Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:04.652273224Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:49:04.68119912Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:49:04.681333511Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:49:04.682464694Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:04.682646758Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:04.682801641Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:04.682841128Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:49:04.682873936Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:49:04.682912693Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:49:04.683289421Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:49:04.684297957Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:49:04.68465899Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:09.702193759Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:49:09.731917539Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:49:09.732016446Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:49:09.73496568Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:09.735397315Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:09.735566492Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:09.7355911Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:49:09.735607278Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:49:09.735620484Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:49:09.736133682Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:14.753310351Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:49:14.78203342Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:49:14.782147031Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:49:14.783179414Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:14.783413069Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:14.783560617Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:14.783583731Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:49:14.783597923Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:49:14.783610341Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:49:14.783863875Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:19.802182856Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:49:19.831965387Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:49:19.832141321Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:49:19.833585153Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:19.8338479Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:19.834039466Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:19.834069968Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:49:19.834086904Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:49:19.834100901Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:49:19.834343123Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:49:19.835493109Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:24.853287251Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:49:24.882648791Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:49:24.882765873Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:49:24.883782111Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:24.883991061Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:24.884156963Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:24.884194836Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:49:24.884210171Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:49:24.884223813Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:49:24.884852179Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:49:24.885154342Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:29.900527041Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:49:29.932119268Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:49:29.932248826Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:49:29.933629639Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:29.933915372Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:29.93411654Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:29.934158206Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:49:29.934175347Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:49:29.934189898Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:49:29.934297874Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:49:29.935426251Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:34.953293298Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:49:34.982897449Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:49:34.983012231Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:49:34.984354007Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:34.985014111Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:34.985191198Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:34.985215339Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:49:34.985269618Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:49:34.985283492Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:49:34.985572236Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:40.000296017Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:49:40.031422262Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:49:40.031544138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:49:40.032814088Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:40.033016025Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:40.03315652Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:40.033184975Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:49:40.033199976Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:49:40.033229463Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:49:40.033662249Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:49:40.034657821Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:45.050276266Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:49:45.080009959Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:49:45.080122329Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:49:45.081468384Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:45.081713987Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:45.081889914Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:45.081917708Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:49:45.08193344Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:49:45.081947263Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:49:45.081979346Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:49:45.083019906Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:50.100621729Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:49:50.130777683Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:49:50.130907484Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:49:50.132033585Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:50.1322785Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:50.132540073Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:50.132571582Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:49:50.132586822Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:49:50.132598767Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:49:50.133057885Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:49:50.133718921Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:55.148011161Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:49:55.179669807Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:49:55.179780616Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:49:55.182215198Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:49:55.182435798Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:55.182607155Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:49:55.182638456Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:49:55.182674886Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:49:55.182710374Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:49:55.182828395Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:49:55.183354571Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:00.207482603Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:50:00.245712576Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:50:00.245847208Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:50:00.247708656Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:00.248312158Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:00.24899559Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:00.249181389Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:50:00.249202447Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:50:00.249216992Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:50:00.249595674Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:50:00.251072494Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:05.266292965Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:50:05.29537032Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:50:05.295502205Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:50:05.299099043Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:05.299681012Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:05.299895614Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:05.299944866Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:50:05.299960656Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:50:05.300024841Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:50:05.300184263Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:50:05.30093006Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:10.322026954Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:50:10.35104488Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:50:10.351139485Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:50:10.352199421Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:10.352578577Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:10.35275954Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:10.352789224Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:50:10.352804718Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:50:10.352818613Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:50:10.353011617Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:50:10.353548539Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:15.371008303Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:50:15.399943456Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:50:15.400073065Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:50:15.401577937Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:15.402026208Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:15.402433424Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:15.402464774Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:50:15.40248004Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:50:15.402492802Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:50:15.402884435Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:50:15.40355426Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:20.422858858Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:50:20.453768225Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:50:20.453867369Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:50:20.455334858Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:20.455706151Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:20.456285177Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:20.456318705Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:50:20.456334817Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:50:20.456348408Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:50:20.456998348Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:50:20.457448062Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:25.472451289Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:50:25.503741919Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:50:25.503856129Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:50:25.505154312Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:25.505419887Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:25.505637305Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:25.505691084Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:50:25.505707714Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:50:25.505719865Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:50:25.506133709Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:50:25.507195127Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:50:25.507349976Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:30.526199499Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:50:30.555120577Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:50:30.555252858Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:50:30.55632639Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:30.556629275Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:30.556831744Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:30.556859804Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:50:30.556875109Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:50:30.556888417Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:50:30.556917245Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:50:35.574101286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:50:35.603204353Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:50:35.603321242Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:50:35.604626452Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:35.604863936Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:35.605095855Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:35.605146789Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:50:35.605162181Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:50:35.605175146Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:50:35.605638006Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:50:35.606613341Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:40.627286885Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:50:40.656390864Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:50:40.656583861Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:50:40.657682484Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:40.65790214Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:40.658100866Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:40.658140374Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:50:40.658156699Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:50:40.65816743Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:50:40.658281646Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:50:40.659694506Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:50:40.659835431Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:45.677282613Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:50:45.705321994Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:50:45.705418332Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:50:45.70647029Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:45.706712857Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:45.706901069Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:45.706924385Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:50:45.706939521Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:50:45.706968771Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:50:45.707688733Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:50:50.727298829Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:50:50.75567865Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:50:50.755772105Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:50:50.757472787Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:50.757653145Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:50.757788289Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:50.757819698Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:50:50.757835243Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:50:50.757848343Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:50:50.758125616Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:55.775297481Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:50:55.804849552Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:50:55.80497237Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:50:55.808100179Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:50:55.808349951Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:55.808698042Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:50:55.808732291Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:50:55.808747926Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:50:55.808762105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:50:55.809144062Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:50:55.809646351Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:00.830275964Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:51:00.860004074Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:51:00.860124544Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:51:00.86135141Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:00.861602931Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:00.861908807Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:00.861938928Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:51:00.861952668Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:51:00.861965624Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:51:00.861998308Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:51:00.862979728Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:05.878523847Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:51:05.908392437Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:51:05.90867247Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:51:05.909816187Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:05.910044848Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:05.910281896Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:05.91032229Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:51:05.910337384Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:51:05.910349883Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:51:05.910718108Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:51:05.911299002Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:10.93185396Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:51:10.961696847Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:51:10.961804138Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:51:10.962821817Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:10.96301394Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:10.963172293Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:10.963205754Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:51:10.963220363Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:51:10.963713105Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:51:10.964029069Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:15.981299541Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:51:16.012593521Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:51:16.012716371Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:51:16.013944023Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:16.014228991Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:16.014510415Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:16.014555952Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:51:16.014572802Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:51:16.014586466Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:51:16.014969016Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:51:16.016320514Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:21.035357024Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:51:21.065736725Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:51:21.065843927Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:51:21.067447286Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:21.067841991Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:21.068038152Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:21.068066915Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:51:21.068081287Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:51:21.068133537Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:51:21.068163201Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:51:21.068928346Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:26.085218846Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:51:26.113742018Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:51:26.113855975Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:51:26.115361857Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:26.115803071Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:26.115968892Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:26.115998126Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:51:26.116014072Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:51:26.116025455Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:51:26.116054464Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:51:26.116658459Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:31.136077673Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:51:31.165754125Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:51:31.165851725Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:51:31.167480885Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:31.167846564Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:31.168002937Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:31.168027263Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:51:31.168041663Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:51:31.168054573Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:51:31.168352746Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:36.184593198Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:51:36.215524163Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:51:36.21562798Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:51:36.216873859Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:36.21709179Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:36.217285051Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:36.217324477Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:51:36.217340055Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:51:36.217355577Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:51:36.218074659Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:41.231619957Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:51:41.261650502Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:51:41.261775194Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:51:41.262823162Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:41.263024367Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:41.263183192Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:41.263215074Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:51:41.263230549Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:51:41.263314669Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:51:41.263694457Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:51:41.264286326Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:46.281287314Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:51:46.31084401Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:51:46.310939943Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:51:46.311962774Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:46.312141191Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:46.312309588Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:46.312335089Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:51:46.312350398Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:51:46.31238754Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:51:46.312577399Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:51:46.313451074Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:51.33302543Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:51:51.36339366Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:51:51.363491252Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:51:51.365360313Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:51.365811886Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:51.36631156Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:51.366347315Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:51:51.366363233Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:51:51.366376278Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:51:51.366409684Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:51:51.36790948Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:56.382439611Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:51:56.414397264Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:51:56.414496792Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:51:56.416285533Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:51:56.416964332Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:56.417387397Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:51:56.41742249Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:51:56.417437927Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:51:56.417476238Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:51:56.417509937Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:51:56.418439398Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:01.435696818Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:52:01.466714091Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:52:01.466819678Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:52:01.46877258Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:01.469074484Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:01.4693413Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:01.469386707Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:52:01.469402738Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:52:01.469416086Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:52:01.469462047Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:52:01.470683252Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:06.489390554Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:52:06.519364376Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:52:06.519465392Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:52:06.521104587Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:06.521634417Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:06.521890672Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:06.521935388Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:52:06.521950953Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:52:06.52196538Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:52:06.522093647Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:52:06.523575499Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:11.542444336Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:52:11.569164669Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:52:11.569281259Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:52:11.570299438Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:11.570473645Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:11.570609759Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:11.57063275Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:52:11.570648018Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:52:11.570688167Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:52:11.570946322Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:16.58553197Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:52:16.61480811Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:52:16.614919229Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:52:16.616006094Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:16.616226885Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:16.616590104Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:16.616639712Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:52:16.616655409Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:52:16.616666608Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:52:16.617177929Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:52:16.617822281Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:21.637166017Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:52:21.671991782Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:52:21.672103397Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:52:21.673231798Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:21.673526395Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:21.673775164Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:21.673857381Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:52:21.673885259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:52:21.673898395Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:52:21.674099566Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:52:21.674577031Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:26.68910355Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:52:26.718082967Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:52:26.718195612Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:52:26.719260974Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:26.719520144Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:26.719722652Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:26.719763319Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:52:26.719779178Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:52:26.71979206Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:52:26.72028647Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:52:26.721217568Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:31.73629126Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:52:31.766508244Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:52:31.7666197Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:52:31.768195817Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:31.768774626Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:31.768938994Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:31.768982361Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:52:31.768999019Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:52:31.769014171Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:52:31.769231539Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:52:31.770508293Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:36.785003325Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:52:36.812155044Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:52:36.812292238Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:52:36.813469844Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:36.813701274Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:36.813860078Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:36.813900848Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:52:36.813915884Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:52:36.813929138Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:52:36.814289541Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:52:36.814835724Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:41.830275377Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:52:41.858451844Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:52:41.858557976Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:52:41.85978521Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:41.860056428Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:41.860231824Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:41.860282785Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:52:41.860296017Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:52:41.860307503Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:52:41.860571418Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:52:41.860919054Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:46.876300557Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:52:46.90625839Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:52:46.906352789Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:52:46.907704505Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:46.907865056Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:46.907997715Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:46.908020125Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:52:46.90803429Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:52:46.908078387Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:52:46.908380943Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:51.92429312Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:52:51.95459798Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:52:51.954710104Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:52:51.955864894Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:51.956061732Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:51.956207713Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:51.956230743Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:52:51.956260306Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:52:51.956274427Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:52:51.956681916Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:56.972690051Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:52:57.003667001Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:52:57.003794209Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:52:57.006467303Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:52:57.007115596Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:57.007587123Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:52:57.007624941Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:52:57.007641437Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:52:57.007654991Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:52:57.007700918Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:52:57.009399975Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:02.027215375Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:53:02.063601659Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:53:02.063711031Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:53:02.066093361Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:02.066729449Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:02.067175179Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:02.067394652Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:53:02.067415888Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:53:02.067428529Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:53:02.067466974Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:53:02.069499375Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:07.083268444Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:53:07.114527021Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:53:07.114633481Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:53:07.115720352Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:07.11592605Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:07.116105075Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:07.11613451Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:53:07.11615073Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:53:07.116161598Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:53:07.11636135Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:53:07.117151085Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:12.129965211Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:53:12.16088099Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:53:12.160979453Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:53:12.162506118Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:12.162708107Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:12.162886435Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:12.162928107Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:53:12.162943461Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:53:12.162957444Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:53:12.163255432Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:17.179642055Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:53:17.209840863Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:53:17.209931659Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:53:17.211568395Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:17.21206635Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:17.212639933Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:17.212676931Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:53:17.212692594Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:53:17.212706569Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:53:17.212739992Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:53:17.214039709Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:53:17.214164085Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:22.230452637Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:53:22.258764824Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:53:22.258979475Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:53:22.26014393Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:22.260588631Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:22.260804599Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:22.260838519Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:53:22.26085395Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:53:22.260867375Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:53:22.261221898Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:27.275622791Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:53:27.305073842Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:53:27.305196016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:53:27.306770435Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:27.307305603Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:27.307742353Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:27.307776298Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:53:27.307792538Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:53:27.307805179Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:53:27.308084994Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:32.326530037Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:53:32.354317435Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:53:32.354435423Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:53:32.355577936Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:32.355823172Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:32.356016605Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:32.3560595Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:53:32.356074487Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:53:32.356087506Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:53:32.357292265Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:37.3713898Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:53:37.400803833Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:53:37.400921689Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:53:37.402979298Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:37.403327143Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:37.403642199Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:37.403689876Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:53:37.403705493Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:53:37.403718719Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:53:37.403757814Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:53:37.404657395Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:42.419318085Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:53:42.449408751Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:53:42.449523739Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:53:42.452074589Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:42.452742197Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:42.452952231Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:42.45298492Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:53:42.453001446Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:53:42.453014289Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:53:42.453050344Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:53:42.4545352Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:47.474388442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:53:47.505078063Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:53:47.505177887Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:53:47.506365968Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:47.506612718Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:47.506822064Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:47.506853215Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:53:47.506870831Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:53:47.506884522Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:53:47.506917905Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:53:47.507580138Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:52.522634283Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:53:52.55213514Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:53:52.552263408Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:53:52.553467264Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:52.553723093Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:52.553952016Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:52.553979873Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:53:52.553993648Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:53:52.554031403Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:53:52.554065097Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:53:52.555132712Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:57.572575219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:53:57.60151105Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:53:57.601625948Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:53:57.603326873Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:53:57.603766435Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:57.604186494Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:53:57.604220313Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:53:57.604249912Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:53:57.60426358Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:53:57.604659515Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:54:02.620897219Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:54:02.652877155Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:54:02.652977773Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:54:02.654137262Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:54:02.654391273Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:54:02.654555895Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:54:02.654594941Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:54:02.65461008Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:54:02.654683378Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:54:02.655482408Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:54:07.672083884Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:54:07.703138554Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:54:07.703273293Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:54:07.704365965Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:54:07.704832747Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:54:07.705032179Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:54:07.705075924Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:54:07.705091844Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:54:07.705103528Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:54:07.705589863Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:54:07.706696989Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:54:12.722394Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:54:12.753577618Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:54:12.753671439Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:54:12.754683646Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:54:12.754899587Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:54:12.755077768Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:54:12.7551047Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:54:12.755120098Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:54:12.755133211Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:54:12.755161757Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:54:12.756139179Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:54:17.772023011Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:54:17.802867851Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:54:17.80296703Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:54:17.804194386Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:54:17.804418244Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:54:17.804699489Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:54:17.804745694Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:54:17.804763259Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:54:17.804776982Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:54:17.805570984Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:54:22.821270286Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:54:22.850129807Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:54:22.850280239Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:54:22.851843942Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:54:22.852064919Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:54:27.87357681Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:54:27.91418641Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:54:27.915089378Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:54:27.916997266Z","level":"ERROR","msg":"initial sync to redis","error":"sync rules: read: query rules: ERROR: column \"app_id\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:54:27.917201415Z","level":"ERROR","msg":"initial sync apps: read","error":"ERROR: relation \"apps\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:54:27.917427032Z","level":"ERROR","msg":"initial sync app_match_rules: read","error":"ERROR: relation \"app_match_rules\" does not exist (SQLSTATE 42P01)","service":"config-service"}
{"time":"2026-05-02T06:54:27.917458453Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:54:27.917473099Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:54:27.917484753Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:54:27.91778068Z","level":"ERROR","msg":"bootstrap admin","error":"bootstrap admin: lookup existing user \"admin\": ERROR: column \"failed_login_attempts\" does not exist (SQLSTATE 42703)","service":"config-service"}
{"time":"2026-05-02T06:54:39.419725442Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T06:54:39.716767355Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T06:54:39.717310869Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T06:54:39.756415361Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T06:54:39.761483608Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T06:54:39.761516186Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T06:54:39.76153066Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T06:54:39.762134983Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T06:54:39.776623586Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T06:54:39.848145255Z","level":"INFO","msg":"bootstrapped admin user","username":"admin","service":"config-service"}
{"time":"2026-05-02T06:54:39.85042015Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-02T06:54:39.850837982Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-02T07:33:19.458952828Z","level":"ERROR","msg":"livefeed: read stream","error":"xread waf:v1:events:stream: context canceled","service":"config-service"}
{"time":"2026-05-02T07:33:19.45910012Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: context canceled","service":"config-service"}
{"time":"2026-05-02T07:33:19.459131191Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-02T07:33:27.055405598Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T07:33:27.127517446Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T07:33:27.127614089Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T07:33:27.200466337Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T07:33:27.21759881Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T07:33:27.217627423Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T07:33:27.217640297Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T07:33:27.218110861Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T07:33:27.222082837Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-02T07:33:27.222885107Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-02T07:33:27.223428459Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T07:33:27.223765689Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-02T07:36:26.91505989Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-02T07:37:11.554366079Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-02T07:37:29.95865712Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-02T07:48:02.255746337Z","level":"ERROR","msg":"livefeed: read stream","error":"xread waf:v1:events:stream: redis: client is closed","service":"config-service"}
{"time":"2026-05-02T07:48:02.256621992Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: redis: client is closed","service":"config-service"}
{"time":"2026-05-02T07:48:02.262312003Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-02T07:48:09.962586208Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T07:48:10.083544462Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T07:48:10.083673687Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T07:48:10.147062688Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T07:48:10.148856907Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T07:48:10.14888536Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T07:48:10.148899162Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T07:48:10.148936729Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T07:48:10.149915313Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T07:48:10.150368613Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-02T07:48:10.151193851Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-02T07:48:10.151297473Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-02T08:00:40.369538742Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-02T08:05:36.459836734Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-02T08:42:57.907831519Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-02T08:46:05.675218841Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-02T14:45:52.394302695Z","level":"ERROR","msg":"livefeed: read stream","error":"xread waf:v1:events:stream: context canceled","service":"config-service"}
{"time":"2026-05-02T14:45:52.394349525Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: context canceled","service":"config-service"}
{"time":"2026-05-02T14:45:52.394502333Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-02T14:45:59.980594845Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T14:46:00.057227527Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T14:46:00.057337583Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T14:46:00.156371736Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T14:46:00.156407679Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T14:46:00.156500748Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T14:46:00.156514163Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T14:46:00.156561199Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T14:46:00.157794304Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-02T14:46:00.158329872Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T14:46:00.159719327Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-02T14:46:00.159938462Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-02T15:20:40.482501586Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: context canceled","service":"config-service"}
{"time":"2026-05-02T15:20:40.482540996Z","level":"ERROR","msg":"livefeed: read stream","error":"xread waf:v1:events:stream: context canceled","service":"config-service"}
{"time":"2026-05-02T15:20:40.483378674Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-02T15:20:48.180438217Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-02T15:20:48.274316781Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-02T15:20:48.274412573Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-02T15:20:48.337871612Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-02T15:20:48.337915798Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-02T15:20:48.337954575Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-02T15:20:48.337970008Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-02T15:20:48.338007213Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-02T15:20:48.338254464Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-02T15:20:48.340403394Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-02T15:20:48.342117873Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-02T15:20:48.342702977Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-03T10:05:47.36934624Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: context canceled","service":"config-service"}
{"time":"2026-05-03T10:05:47.369389144Z","level":"ERROR","msg":"livefeed: read stream","error":"xread waf:v1:events:stream: context canceled","service":"config-service"}
{"time":"2026-05-03T10:05:47.372311939Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-03T10:05:54.975268465Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-03T10:05:55.05785635Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-03T10:05:55.057950761Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-03T10:05:55.15395114Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-03T10:05:55.154328406Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-03T10:05:55.154349666Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-03T10:05:55.154373074Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-03T10:05:55.154430383Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-03T10:05:55.155201398Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-03T10:05:55.155997003Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-03T10:05:55.156549405Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-03T10:05:55.157224844Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-03T10:19:00.427715605Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-03T11:13:47.175570484Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: context canceled","service":"config-service"}
{"time":"2026-05-03T11:13:47.175618854Z","level":"ERROR","msg":"livefeed: read stream","error":"xread waf:v1:events:stream: context canceled","service":"config-service"}
{"time":"2026-05-03T11:13:47.175664083Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-03T11:13:56.120407695Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-03T11:13:56.182719473Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-03T11:13:56.182808966Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-03T11:13:56.238656846Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-03T11:13:56.238694735Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-03T11:13:56.23870773Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-03T11:13:56.238812052Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-03T11:13:56.23947496Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-03T11:13:56.24017098Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-03T11:13:56.240365119Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-03T11:13:56.241453882Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-03T11:13:56.241766497Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-03T19:30:26.094940034Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-03T19:30:34.8195478Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-03T19:30:34.927154938Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-03T19:30:34.92734016Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-03T19:30:34.995614657Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-03T19:30:34.995661049Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-03T19:30:34.995676279Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-03T19:30:34.99568721Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-03T19:30:34.995697694Z","level":"INFO","msg":"snapshot scheduler started","dir":"/var/lib/waf/snapshots","service":"config-service"}
{"time":"2026-05-03T19:30:34.995771188Z","level":"ERROR","msg":"snapshot: mkdir failed","dir":"/var/lib/waf/snapshots","error":"mkdir /var/lib/waf: permission denied","service":"config-service"}
{"time":"2026-05-03T19:30:34.995808774Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-03T19:30:34.996373057Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-03T19:30:34.996784843Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-03T19:30:34.997892009Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-03T19:30:34.998121695Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-04T10:28:36.922288466Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-04T13:00:21.065500394Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-04T14:16:11.306611003Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-04T15:38:53.436193061Z","level":"ERROR","msg":"livefeed: read stream","error":"xread waf:v1:events:stream: context canceled","service":"config-service"}
{"time":"2026-05-04T15:38:53.436281688Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-04T15:39:02.598553391Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-04T15:39:02.697031747Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-04T15:39:02.697144447Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-04T15:39:02.796638455Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-04T15:39:02.797110668Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-04T15:39:02.79713698Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-04T15:39:02.797150825Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-04T15:39:02.797163757Z","level":"INFO","msg":"snapshot scheduler started","dir":"/var/lib/waf/snapshots","service":"config-service"}
{"time":"2026-05-04T15:39:02.79758014Z","level":"ERROR","msg":"snapshot: mkdir failed","dir":"/var/lib/waf/snapshots","error":"mkdir /var/lib/waf: permission denied","service":"config-service"}
{"time":"2026-05-04T15:39:02.797624605Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-04T15:39:02.798463998Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-04T15:39:02.798661747Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-04T15:39:02.7995357Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-04T15:39:02.799794816Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-09T11:24:58.447629167Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: context canceled","service":"config-service"}
{"time":"2026-05-09T11:24:58.44801742Z","level":"ERROR","msg":"livefeed: read stream","error":"xread waf:v1:events:stream: context canceled","service":"config-service"}
{"time":"2026-05-09T11:24:58.448566423Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-09T11:25:07.686798917Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-09T11:25:07.87114698Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-09T11:25:07.871396274Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-09T11:25:07.895834895Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-09T11:25:07.896227591Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-09T11:25:07.896259685Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-09T11:25:07.896274626Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-09T11:25:07.89631481Z","level":"INFO","msg":"snapshot scheduler started","dir":"/var/lib/waf/snapshots","service":"config-service"}
{"time":"2026-05-09T11:25:07.896610712Z","level":"ERROR","msg":"snapshot: mkdir failed","dir":"/var/lib/waf/snapshots","error":"mkdir /var/lib/waf: permission denied","service":"config-service"}
{"time":"2026-05-09T11:25:07.897025289Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-09T11:25:07.897898268Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-09T11:25:07.898053519Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-09T11:25:07.898532177Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-09T11:25:07.898685872Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-11T17:06:16.392371578Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-11T17:06:25.285448793Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-11T17:06:25.400205258Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-11T17:06:25.400318029Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-11T17:06:25.469394622Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-11T17:06:25.469829884Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-11T17:06:25.469854127Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-11T17:06:25.469868447Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-11T17:06:25.46988295Z","level":"INFO","msg":"snapshot scheduler started","dir":"/var/lib/waf/snapshots","service":"config-service"}
{"time":"2026-05-11T17:06:25.469954386Z","level":"ERROR","msg":"snapshot: mkdir failed","dir":"/var/lib/waf/snapshots","error":"mkdir /var/lib/waf: permission denied","service":"config-service"}
{"time":"2026-05-11T17:06:25.470073808Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-11T17:06:25.47076377Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-11T17:06:25.471846897Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-11T17:06:25.473006397Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-11T17:06:25.473525216Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-11T17:40:50.036944519Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-11T17:41:41.933043846Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-12T14:04:34.333468033Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-12T14:04:43.007623926Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-12T14:04:43.077709641Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-12T14:04:43.077811934Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-12T14:04:43.187547431Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-12T14:04:43.18759951Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-12T14:04:43.187615217Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-12T14:04:43.187627297Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-12T14:04:43.187639665Z","level":"INFO","msg":"snapshot scheduler started","dir":"/var/lib/waf/snapshots","service":"config-service"}
{"time":"2026-05-12T14:04:43.187936133Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-12T14:04:43.188430017Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-12T14:04:43.188567897Z","level":"ERROR","msg":"snapshot: mkdir failed","dir":"/var/lib/waf/snapshots","error":"mkdir /var/lib/waf: permission denied","service":"config-service"}
{"time":"2026-05-12T14:04:43.188706185Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-12T14:04:43.189617425Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-12T14:04:43.189630835Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-13T19:32:26.100269102Z","level":"ERROR","msg":"livefeed: read stream","error":"xread waf:v1:events:stream: context canceled","service":"config-service"}
{"time":"2026-05-13T19:32:26.100308499Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: context canceled","service":"config-service"}
{"time":"2026-05-13T19:32:26.101361425Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-13T19:32:33.951355585Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-13T19:32:34.089859567Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-13T19:32:34.090175783Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-13T19:32:34.152830618Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-13T19:32:34.153297499Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-13T19:32:34.153318885Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-13T19:32:34.153333063Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-13T19:32:34.153346364Z","level":"INFO","msg":"snapshot scheduler started","dir":"/var/lib/waf/snapshots","service":"config-service"}
{"time":"2026-05-13T19:32:34.153413544Z","level":"ERROR","msg":"snapshot: mkdir failed","dir":"/var/lib/waf/snapshots","error":"mkdir /var/lib/waf: permission denied","service":"config-service"}
{"time":"2026-05-13T19:32:34.153440925Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-13T19:32:34.154380576Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-13T19:32:34.155216246Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-13T19:32:34.156095562Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-13T19:32:34.156214888Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-13T20:30:04.762566125Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: context canceled","service":"config-service"}
{"time":"2026-05-13T20:30:04.762609608Z","level":"ERROR","msg":"livefeed: read stream","error":"xread waf:v1:events:stream: context canceled","service":"config-service"}
{"time":"2026-05-13T20:30:04.763133006Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-13T20:30:13.296211367Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-13T20:30:13.435581444Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-13T20:30:13.435709238Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-13T20:30:13.473375492Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-13T20:30:13.4734239Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-13T20:30:13.473438835Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-13T20:30:13.473448714Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-13T20:30:13.473458612Z","level":"INFO","msg":"snapshot scheduler started","dir":"/var/lib/waf/snapshots","service":"config-service"}
{"time":"2026-05-13T20:30:13.473518037Z","level":"ERROR","msg":"snapshot: mkdir failed","dir":"/var/lib/waf/snapshots","error":"mkdir /var/lib/waf: permission denied","service":"config-service"}
{"time":"2026-05-13T20:30:13.473577011Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-13T20:30:13.474106677Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-13T20:30:13.475533472Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-13T20:30:13.476436091Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-13T20:30:13.476508414Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-15T15:35:43.301185561Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-15T15:35:51.768601614Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-15T15:35:51.855620837Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-15T15:35:51.855740619Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-15T15:35:51.941323322Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-15T15:35:51.941366471Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-15T15:35:51.941380986Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-15T15:35:51.941393767Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-15T15:35:51.941432156Z","level":"INFO","msg":"snapshot scheduler started","dir":"/var/lib/waf/snapshots","service":"config-service"}
{"time":"2026-05-15T15:35:51.941834652Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-15T15:35:51.942008348Z","level":"ERROR","msg":"snapshot: mkdir failed","dir":"/var/lib/waf/snapshots","error":"mkdir /var/lib/waf: permission denied","service":"config-service"}
{"time":"2026-05-15T15:35:51.94203703Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-15T15:35:51.942998719Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-15T15:35:51.944072401Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-15T15:35:51.944120308Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-16T11:26:21.797966972Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: context canceled","service":"config-service"}
{"time":"2026-05-16T11:26:21.798071945Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-16T11:26:30.539333363Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-16T11:26:30.695984005Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-16T11:26:30.696090426Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-16T11:26:30.726685757Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-16T11:26:30.726720288Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-16T11:26:30.726885749Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-16T11:26:30.726928496Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-16T11:26:30.726961675Z","level":"INFO","msg":"snapshot scheduler started","dir":"/var/lib/waf/snapshots","service":"config-service"}
{"time":"2026-05-16T11:26:30.727015261Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-16T11:26:30.727024129Z","level":"ERROR","msg":"snapshot: mkdir failed","dir":"/var/lib/waf/snapshots","error":"mkdir /var/lib/waf: permission denied","service":"config-service"}
{"time":"2026-05-16T11:26:30.727901435Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-16T11:26:30.727969306Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-16T11:26:30.729148992Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-16T11:26:30.729273269Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-16T13:15:45.621538759Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-16T13:15:59.546380968Z","level":"ERROR","msg":"livefeed: read stream","error":"xread waf:v1:events:stream: context canceled","service":"config-service"}
{"time":"2026-05-16T13:15:59.546906914Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: context canceled","service":"config-service"}
{"time":"2026-05-16T13:15:59.547034943Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-16T13:16:07.786833306Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-16T13:16:07.896283399Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-16T13:16:07.896428025Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-16T13:16:07.968430837Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-16T13:16:07.968478207Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-16T13:16:07.968494079Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-16T13:16:07.968506505Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-16T13:16:07.968542528Z","level":"INFO","msg":"snapshot scheduler started","dir":"/var/lib/waf/snapshots","service":"config-service"}
{"time":"2026-05-16T13:16:07.968572094Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-16T13:16:07.968601123Z","level":"ERROR","msg":"snapshot: mkdir failed","dir":"/var/lib/waf/snapshots","error":"mkdir /var/lib/waf: permission denied","service":"config-service"}
{"time":"2026-05-16T13:16:07.969357258Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-16T13:16:07.97014365Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-16T13:16:07.970314355Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-16T13:16:07.970369546Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-16T19:08:40.389148537Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-16T19:26:07.367354622Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: context canceled","service":"config-service"}
{"time":"2026-05-16T19:26:07.367415531Z","level":"ERROR","msg":"livefeed: read stream","error":"xread waf:v1:events:stream: context canceled","service":"config-service"}
{"time":"2026-05-16T19:26:07.367578255Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-16T19:26:07.4791726Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-16T19:26:07.519464213Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-16T19:26:07.519588801Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-16T19:26:07.566121655Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-16T19:26:07.566165813Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-16T19:26:07.566190348Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-16T19:26:07.566202431Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-16T19:26:07.566226126Z","level":"INFO","msg":"snapshot scheduler started","dir":"/var/lib/waf/snapshots","service":"config-service"}
{"time":"2026-05-16T19:26:07.566311164Z","level":"ERROR","msg":"snapshot: mkdir failed","dir":"/var/lib/waf/snapshots","error":"mkdir /var/lib/waf: permission denied","service":"config-service"}
{"time":"2026-05-16T19:26:07.566534135Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-16T19:26:07.567071864Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-16T19:26:07.567920378Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-16T19:26:07.569280654Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-16T19:26:07.569465779Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-16T19:28:25.522568201Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: context canceled","service":"config-service"}
{"time":"2026-05-16T19:28:25.522610031Z","level":"ERROR","msg":"livefeed: read stream","error":"xread waf:v1:events:stream: context canceled","service":"config-service"}
{"time":"2026-05-16T19:28:25.522637836Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-16T19:28:25.632182813Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-16T19:28:25.686286338Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-16T19:28:25.686407361Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-16T19:28:25.733988512Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-16T19:28:25.734467041Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-16T19:28:25.734494328Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-16T19:28:25.734508421Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-16T19:28:25.73452471Z","level":"INFO","msg":"snapshot scheduler started","dir":"/var/lib/waf/snapshots","service":"config-service"}
{"time":"2026-05-16T19:28:25.734601766Z","level":"ERROR","msg":"snapshot: mkdir failed","dir":"/var/lib/waf/snapshots","error":"mkdir /var/lib/waf: permission denied","service":"config-service"}
{"time":"2026-05-16T19:28:25.734836258Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-16T19:28:25.735749163Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-16T19:28:25.736549585Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-16T19:28:25.737224355Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-16T19:28:25.737491321Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-16T19:46:42.397534624Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:43.398344231Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:44.399503611Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:45.400354245Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:46.401273818Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:47.402056255Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:48.403024577Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:49.403373625Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:50.40397304Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:51.405261655Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:52.406632868Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:53.407463272Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:54.408527912Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:55.4097361Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:56.410084571Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:57.410959417Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:58.411517598Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:46:59.412340332Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:00.413461372Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:01.41553409Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:02.416360101Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:03.417616966Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:04.418502791Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:05.419322729Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:06.42065683Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:07.421566281Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:08.422772818Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:09.424064023Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:10.425572089Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:11.4265439Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:12.427809414Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:13.428478763Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:14.429637356Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:15.430531134Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:16.43144941Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:17.432257819Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:18.43310816Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:19.433662691Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:20.434382534Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:21.435543244Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:22.435879589Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:23.437059242Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:24.437895165Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:25.438442959Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:26.438884069Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:27.439455329Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:28.440390606Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:29.441250261Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:30.441767889Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:31.442676778Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:32.443791168Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:33.44514299Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:34.446350088Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:35.447029521Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:36.447415048Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:37.447951846Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:38.449109039Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:39.450445309Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:40.451300885Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:41.452295214Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:42.453224432Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:43.454399122Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:44.455102464Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:45.455733269Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:46.456617352Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:47.457612783Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:48.458897983Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:49.459445407Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:50.460539049Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:51.461380739Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:52.461821265Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:53.463152541Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:54.464146915Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:55.465062858Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:56.466449076Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:57.467482723Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:58.468924436Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:47:59.46951512Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:00.470867258Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:01.471837568Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:02.476217916Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:03.477371049Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:04.478086298Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:05.478479161Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:06.479681477Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:07.480554198Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:08.481878489Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:09.482524538Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:10.483139858Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:11.484364683Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:12.484690345Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:13.485470254Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:14.485830859Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:15.486778143Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:16.487065655Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:17.487589547Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:18.488138765Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:19.48879395Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:20.489279673Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:21.489755982Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:22.490900364Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:23.491501673Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:24.492259913Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:25.493227391Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:26.493894404Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:27.495214585Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:28.496224566Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:29.497363653Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:30.498390664Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:31.499217145Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:32.500515662Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:33.501301727Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:34.501616342Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:35.502091583Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:36.502542372Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:37.503952243Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:38.504561105Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:39.505636908Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:40.506685606Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:41.508013386Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:42.50921186Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:43.510549948Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:44.511264595Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:45.51214985Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:46.5125346Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:47.513653449Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:48.514536995Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:49.515676121Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:50.516025198Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:51.51734574Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:52.517867479Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:53.519112058Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:54.519498026Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:55.520419769Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:56.521436025Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:57.522372815Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:58.523030728Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:48:59.524213466Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:00.525314158Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:01.526663717Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:02.528587949Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:03.529752976Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:04.531002638Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:05.531563403Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:06.531930867Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:07.533223373Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:08.534568788Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:09.53551895Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:10.536008448Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:11.536793117Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:12.537146687Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:13.538302077Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:14.539106173Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:15.540119531Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:16.540806197Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:17.541560264Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:18.542544671Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:19.542939721Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:20.544305447Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:21.545043954Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:22.545665186Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:23.5463728Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:24.54705115Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:25.547666664Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:26.548296197Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:27.549534149Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:28.550854099Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:29.551285844Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:30.551838994Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:31.553252419Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:32.554399083Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:33.555506053Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:34.556088617Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:35.5573541Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:36.55848385Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:37.559645125Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:38.56015422Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:39.56134507Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:40.562471007Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:41.563298037Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:42.564176839Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:43.565301341Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:44.566363317Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:45.56733584Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:46.567897143Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:47.568460128Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:48.569422404Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:49.570185715Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:50.570814087Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:51.571499132Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:52.572232125Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:53.572768026Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:54.5733777Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:55.574417872Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:56.575273179Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:57.576005297Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:58.576387868Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:49:59.577359417Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:00.57851271Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:01.621916895Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:02.625883285Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:03.62725672Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:04.62852282Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:05.629468148Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:06.630538684Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:07.630909569Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:08.631515496Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:09.632134337Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:10.633498443Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:11.634501692Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:12.635670741Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:13.635989675Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:14.636994212Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:15.638041515Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:16.638871851Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:17.640202308Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:18.640824501Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:19.641545133Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:20.642323008Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:21.64350267Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:22.644666688Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:23.645915477Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:24.647166996Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:25.648410757Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:26.64938456Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:27.649777226Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:28.651087038Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:29.652232698Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:30.652952402Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:31.654069033Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:32.655254955Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:33.656171502Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:34.657359751Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:35.658047072Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:36.658609986Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:37.659443802Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:38.660523421Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:39.661552689Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:40.662669998Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:41.664029564Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:42.665445037Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:43.666765699Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:44.667724197Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:45.668641527Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:46.669397385Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:47.670763778Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:48.671561084Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:49.672352792Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:50.673722822Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:51.674352991Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:52.675495522Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:53.676060128Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:54.676573273Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:55.677465978Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:56.678025078Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:57.679100689Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:58.680372883Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:50:59.680707642Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:00.681579269Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:01.682532458Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:02.683643715Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:03.684622767Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:04.685412778Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:05.685653722Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:06.686914556Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:07.688088326Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:08.68905221Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:09.690006827Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:10.690849579Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:11.691356452Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:12.691731735Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:13.692396831Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:14.693137111Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:15.694044082Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:16.695391798Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:17.696225486Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:18.697508258Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:19.698034157Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:20.698918475Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:21.699641815Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:22.700198498Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:23.701542307Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:24.701977652Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:25.703409523Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:26.70447105Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:27.705175014Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:28.706375226Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:29.70721029Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:30.707715672Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:31.708405468Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:32.709340827Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:33.710550409Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:34.711561391Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:35.71212202Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:36.713049713Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:37.713403507Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:38.71454775Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:39.715286456Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:40.716634208Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:41.717665472Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:42.718812481Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:43.720080219Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:44.720700302Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:45.721300871Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:46.722651983Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:47.72321908Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:48.723681743Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:49.725095926Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:50.726463412Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:51.727850642Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:52.728764521Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:53.729422995Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:54.729971547Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:55.731060699Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:56.731434105Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:57.732646345Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:58.733171633Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:51:59.734294634Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:00.735656073Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:01.736487613Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:02.737627199Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:03.738370585Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:04.738716289Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:05.739885342Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:06.741325795Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:07.741827772Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:08.743165575Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:09.744095075Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:10.745155429Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:11.746143491Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:12.747074014Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:13.748354411Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:14.7493786Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:15.75057167Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:16.751361508Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:17.752227419Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:18.753351581Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:19.754407173Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:20.755389543Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:21.756522055Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:22.75842169Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:23.759118326Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:24.760484891Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:25.761437189Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:26.762324372Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:27.763529585Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:28.764367003Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:29.765050538Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:30.76551624Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:31.766352028Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:32.767286323Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:33.768087776Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:34.769368278Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:35.770129305Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:36.770854886Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:37.772024622Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:38.773306687Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:39.774402608Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:40.776279592Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:41.777187089Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:42.778357622Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:43.779350782Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:44.7800858Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:45.780838871Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:46.7821221Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:47.783296111Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:48.784069007Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:49.78556029Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:50.786818877Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:51.787378654Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:52.788503384Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:53.78981292Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:54.790592565Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:55.79106941Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:56.791897673Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:57.793259021Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:58.793824648Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:52:59.794988326Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:00.795929984Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:01.797304813Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:02.798500187Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:03.799801805Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:04.80135789Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:05.802754312Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:06.804064787Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:07.804730428Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:08.805366669Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:09.806448954Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:10.807555079Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:11.808485574Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:12.809753662Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:13.810808104Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:14.811507069Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:15.811844556Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:16.812444795Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:17.813553535Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:18.814931346Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:19.815492911Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:20.816747863Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:21.81730541Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:22.818158477Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:23.819180911Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:24.820368742Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:25.82162054Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:26.822764694Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:27.823093677Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:28.824213341Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:29.824549375Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:30.825264252Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:31.826129918Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:32.826665177Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:33.827449023Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:34.828484764Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:35.829483088Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:36.829847048Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:37.830662266Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:38.831339649Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:39.832214227Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:40.833300405Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:41.834190954Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:42.834902096Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:43.835696749Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:44.836003722Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:45.836727686Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:46.837864772Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:47.839083787Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:48.840187063Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:49.841208206Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:50.841829047Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:51.842891201Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:52.844077503Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:53.844689304Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:54.845407224Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:55.846769819Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:56.847282458Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:57.848176682Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:58.849136877Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:53:59.850391421Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:00.851101893Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:01.852205645Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:02.853148022Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:03.853831775Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:04.855035458Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:05.855892848Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:06.857195231Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:07.858160385Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:08.859431354Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:09.860676708Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:10.861329715Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:11.862523522Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:12.863475668Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:13.864086364Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:14.86528059Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:15.866348047Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:16.867491995Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:17.868707752Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:18.869178177Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:19.870191162Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:20.870553248Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:21.870975648Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:22.872084695Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:23.873349025Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:24.874413734Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:25.875566201Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:26.876828835Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:27.878416002Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:28.879580988Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:29.880704344Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:30.883466315Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:31.883998728Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:32.884589577Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:33.885387438Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:34.885626079Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:35.886958124Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:36.8879168Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:37.888482998Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:38.889766864Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:39.891035707Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:40.89222012Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:41.892741376Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:42.893912854Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:43.894419293Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:44.895455094Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:45.896028275Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:46.897074083Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:47.898412939Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:48.899518559Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:49.900555848Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:50.901014002Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:51.902160568Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:52.902711869Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:53.90313834Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:54.903758734Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:55.904397719Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:56.905774898Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:57.907098978Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:58.90791751Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:54:59.909317019Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:00.909759231Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:01.911298618Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:02.912032393Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:03.91353379Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:04.914414586Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:05.915156033Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:06.916688784Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:07.917527683Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:08.918501498Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:09.919528547Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:10.920719359Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:11.921486944Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:12.922037092Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:13.92333332Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:14.924715075Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:15.925446181Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:16.926130627Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:17.927172091Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:18.928567449Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:19.929013354Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:20.929383563Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:21.930486869Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:22.931300175Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:23.932265029Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:24.933648341Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:25.934366481Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:26.935821959Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:27.9370538Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:28.937843448Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:29.938336899Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:30.939576296Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:31.940358993Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:32.941381663Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:33.942724885Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:34.943823252Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:35.945051316Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:36.945901177Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:37.946634866Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:38.947878292Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:39.948416254Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:40.949513235Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:41.950130671Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:42.950755919Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:43.951158275Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:44.951737936Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:45.95255826Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:46.953193807Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:47.954477554Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:48.955574124Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:49.956820161Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:50.957475639Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:51.958030012Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:52.958662401Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:53.959211656Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:54.960003475Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:55.960711746Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:56.961525541Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:57.96185766Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:58.962419498Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:55:59.963810726Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:00.964577895Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:01.965598003Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:02.966564923Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:03.967408479Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:04.968474119Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:05.969804597Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:06.971045881Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:07.97164109Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:08.973011431Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:09.973830836Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:10.974977072Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:11.976499346Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:12.977621323Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:13.978093461Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:14.979295277Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:15.980423244Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:16.981643791Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:17.982361454Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:18.983738458Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:19.985000986Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:20.985594384Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:21.98588117Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:22.986950701Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:23.987963995Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:24.9884519Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:25.98881852Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:26.989836849Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:27.990188422Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:28.990802495Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:29.991549702Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:30.992973671Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:31.993857101Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:32.994988757Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:33.995963518Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:34.996816167Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:35.998083366Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:36.999425179Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:38.000674629Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:39.002373722Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:40.00319816Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:41.004209815Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:42.005210893Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:43.006362403Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:44.007762561Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:45.008494139Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:46.009075072Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:47.009588039Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:48.010500795Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:49.0115331Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:50.012271766Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:51.012660066Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:52.013958179Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:53.015207705Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:54.016270892Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:55.017298559Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:56.018408398Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:57.019517475Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:58.020215684Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:56:59.021509129Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:00.022741885Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:01.023544833Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:02.025188164Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:03.027167634Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:04.028509062Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:05.029851793Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:06.031304346Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:07.032297509Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:08.03288995Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:09.033987113Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:10.035210957Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:11.035567862Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:12.037037732Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:13.037863814Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:14.038919113Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:15.039556049Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:16.040276722Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:17.040957072Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:18.041309762Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:19.042624512Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:20.043433276Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:21.0447135Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:22.045174569Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:23.046533365Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:24.047391518Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:25.048005136Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:26.048780159Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:27.050203194Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:28.050918024Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:29.051693839Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:30.053038655Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:31.053416554Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:32.054586555Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:33.055029979Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:34.055764639Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:35.057266203Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:36.057848288Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:37.059137342Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:38.059730631Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:39.060443483Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:40.061196483Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:41.061714697Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:42.062746192Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:43.06329836Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:44.063791881Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:45.0643845Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:46.06543639Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:47.066409023Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:48.067436872Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:49.068554801Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:50.069825639Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:51.070455858Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:52.071522958Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:53.072663993Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:54.073295653Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:55.073857198Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:56.074784613Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:57.075160713Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:58.076410232Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:57:59.076725506Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:00.078146379Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:01.079439702Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:02.080390304Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:03.08121424Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:04.081807008Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:05.082670516Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:06.083700531Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:07.084340117Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:08.085691659Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:09.086930557Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:10.087406458Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:11.087986046Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:12.089264457Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:13.090311034Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:14.090940446Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:15.092018314Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:16.092801031Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:17.093942949Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:18.094939816Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:19.096218535Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:20.097075889Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:21.098015416Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:22.09904838Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:23.099576486Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:24.100743511Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:25.101295519Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:26.102511464Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:27.102861534Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:28.103511702Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:29.104712341Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:30.105766064Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:31.106393676Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:32.107701076Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:33.10840477Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:34.109408199Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:35.110076325Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:36.110748099Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:37.111570793Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:38.112494571Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:39.113274324Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:40.114506053Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:41.115696288Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:42.116963299Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:43.117803118Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:44.118805384Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:45.119829759Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:46.120450201Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:47.12119013Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:48.122481118Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:49.123629153Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:50.124223076Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:51.125287323Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:52.126049346Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:53.12645157Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:54.12748094Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:55.128543914Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:56.129735829Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:57.130129236Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:58.13137437Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:58:59.132164174Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:00.13440665Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:01.135094555Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:02.135825603Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:03.137297601Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:04.138379564Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:05.138845704Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:06.139577673Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:07.140365509Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:08.141498273Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:09.144623254Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:10.145351282Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:11.146627236Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:12.147454006Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:13.148707312Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:14.149934926Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:15.150678816Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:16.151314278Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:17.151874808Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:18.152291755Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:19.153226111Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:20.154427814Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:21.155361397Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:22.156516654Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:23.157298547Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:24.158055565Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:25.158714018Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:26.159420523Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:27.160712176Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:28.161853102Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:29.164779448Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:30.165405747Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:31.166052991Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:32.16647416Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:33.167295323Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:34.167873196Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:35.168281718Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:36.169227042Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:37.170040805Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:38.171055087Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:39.172014146Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:40.173162279Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:41.174413014Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:42.17542773Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:43.176559878Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:44.177504747Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:45.178401187Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:46.178893445Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:47.179950164Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:48.180490104Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:49.181426111Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:50.182116661Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:51.182488063Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:52.183422233Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:53.184198869Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:54.185894716Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:55.186753235Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:56.187734876Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:57.189014453Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:58.190115191Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T19:59:59.191035617Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:00.196791262Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:01.20626424Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:02.206864998Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:03.208037238Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:04.209304648Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:05.21077808Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:06.212104415Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:07.212745134Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:08.21345603Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:09.21456333Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:10.216013008Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:11.216588749Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:12.217835796Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:13.218485937Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:14.219189377Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:15.219551271Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:16.220477303Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:17.221165248Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:18.221992472Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:19.222497533Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:20.223496401Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:21.224530272Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:22.225457134Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:23.226472628Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:24.227054931Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:25.227633004Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:26.228182296Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:27.22880225Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:28.22934622Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:29.230214925Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:30.231533951Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:31.232293924Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:32.233211908Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:33.234523776Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:34.235207156Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:35.23576144Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:36.236126838Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:37.2371851Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:38.237661964Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:39.238069203Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:40.239342544Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:41.239912531Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:42.240250765Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:43.241271774Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:44.241641993Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:45.242366005Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:46.243051763Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:47.243728779Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:48.244610644Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:49.245386562Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:50.246219805Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:51.247304646Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:52.248015297Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:53.248973454Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:54.25033456Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:55.251273672Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:56.252203738Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:57.253378567Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:58.254537914Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:00:59.255119416Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:00.256467795Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:01.257938022Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:02.258841689Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:03.25986887Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:04.260311412Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:05.261514175Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:06.26236829Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:07.263096047Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:08.264425204Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:09.264969561Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:10.265410326Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:11.265978264Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:12.266387312Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:13.267206702Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:14.267824094Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:15.2683809Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:16.269308792Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:17.269674801Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:18.270823437Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:19.271170452Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:20.272363014Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:21.273742084Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:22.275055305Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:23.276303833Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:24.277152555Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:25.277939143Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:26.27884251Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:27.279467465Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:28.280562152Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:29.281033642Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:30.282498912Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:31.283109323Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:32.283727855Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:33.284377269Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:34.285463143Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:35.285941788Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:36.287070494Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:37.287872954Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:38.289029197Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:39.289892148Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:40.290330976Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:41.291550824Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:42.291896409Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:43.292761685Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:44.293983452Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:45.295332109Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:46.296454857Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:47.297285521Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:48.297977995Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:49.299340549Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:50.30045645Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:51.301801289Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:52.302584418Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:53.303611491Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:54.304538892Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:55.305016004Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:56.306347954Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:57.307424061Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:58.308434648Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:01:59.309253902Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:00.309941328Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:01.311173884Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:02.312493392Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:03.313753126Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:04.314502697Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:05.315450682Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:06.316388074Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:07.316765698Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:08.318142064Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:09.319524557Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:10.320471854Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:11.321014201Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:12.322057275Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:13.323227855Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:14.323841127Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:15.324757772Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:16.325887768Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:17.3263826Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:18.327549989Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:19.328224451Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:20.329535006Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:21.33011101Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:22.330760062Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:23.332111694Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:24.333511603Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:25.334435301Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:26.335751185Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:27.336622177Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:28.337317615Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:29.337829231Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:30.338201071Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:31.338781038Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:32.340177849Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:33.341181877Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:34.342334074Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:35.342862493Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:36.343635656Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:37.344403822Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:38.345266544Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:39.345838626Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:40.347154573Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:41.348299372Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:42.348786407Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:43.349985594Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:44.35110684Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:45.352299025Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:46.353481492Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:47.354468624Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:48.35572035Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:49.356278831Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:50.35661033Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:51.357450012Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:52.358466933Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:53.359400935Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:54.360543377Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:55.361149134Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:56.361996916Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:57.362783774Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:58.363547803Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:02:59.364301367Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:00.365547899Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:01.366462466Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:02.367760478Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:03.368702031Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:04.369727735Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:05.371102387Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:06.372136387Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:07.373066946Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:08.374494946Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:09.375539851Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:10.376116901Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:11.37710503Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:12.378351545Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:13.379092311Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:14.379477886Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:15.380452361Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:16.381228221Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:17.382348467Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:18.383414969Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:19.384580116Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:20.385368655Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:21.385713383Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:22.387008739Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:23.3881704Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:24.389095526Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:25.390412826Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:26.391030168Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:27.391589714Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:28.391944726Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:29.393272916Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:30.393664435Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:31.394633981Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:32.394978388Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:33.39538612Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:34.395728409Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:35.397252587Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:36.397884235Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:37.398951168Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:38.399864444Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:39.400699184Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:40.401276823Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:41.401718263Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:42.402603667Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:43.404510487Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:44.405151976Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:45.406511612Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:46.407154319Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:47.408043946Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:48.409302003Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:49.409625936Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:50.410330048Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:51.411050685Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:52.412282861Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:53.413472059Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:54.41421745Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:55.415279778Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:56.415860471Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:57.41643977Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:58.417228223Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:03:59.418583422Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:00.418911945Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:01.42024823Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:02.421303206Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:03.422518104Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:04.423643296Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:05.424589098Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:06.425653313Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:07.426758702Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:08.4272867Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:09.429569466Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:10.4300677Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:11.430857255Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:12.431221342Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:13.432183456Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:14.433131473Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:15.433720601Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:16.434165546Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:17.43520106Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:18.435687276Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:19.436012356Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:20.437382381Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:21.438335626Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:22.439590533Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:23.440706321Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:24.441998366Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:25.442678319Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:26.443050315Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:27.443885856Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:28.445180852Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:29.446484389Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:30.447321015Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:31.447630036Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:32.448578833Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:33.449312275Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:34.450641536Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:35.451203552Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:36.452292954Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:37.453786247Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:38.454724541Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:39.456023288Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:40.457367086Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:41.458058322Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:42.459128986Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:43.460396762Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:44.461383744Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:45.462434335Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:46.46326764Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:47.463825485Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:48.464788015Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:49.465462415Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:50.466183005Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:51.467097113Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:52.46781908Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:53.469318473Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:54.470080049Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:55.470923694Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:56.4720195Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:57.473053845Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:58.473703346Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:04:59.474467187Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:00.475069958Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:01.476122065Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:02.478168275Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:03.479081181Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:04.479738282Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:05.481182673Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:06.482590768Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:07.483673658Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:08.485213443Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:09.485537051Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:10.486677053Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:11.487193922Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:12.488434484Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:13.489014199Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:14.489803263Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:15.491080879Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:16.491976571Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:17.493285024Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:18.494178502Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:19.4948777Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:20.496073491Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:21.496448815Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:22.497435699Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:23.498133899Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:24.498913674Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:25.49959232Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:26.501133057Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:27.502047719Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:28.503254574Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:29.504187199Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:30.505335118Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:31.506465829Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:32.506945829Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:33.507646694Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:34.508297014Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:35.509541038Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:36.510353775Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:37.511044943Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:38.511474206Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:39.512748073Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:40.513700832Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:41.514386366Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:42.51536106Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:43.516358535Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:44.517311172Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:45.518120648Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:46.519101422Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:47.519746514Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:48.520687082Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:49.521735688Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:50.523081362Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:51.523751663Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:52.524467889Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:53.525084636Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:54.526454157Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:55.527245585Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:56.527968345Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:57.529231322Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:58.529640295Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:05:59.530557259Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:00.531663814Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:01.532551128Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:02.533517584Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:03.534801827Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:04.53555091Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:05.535985851Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:06.537444393Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:07.538406374Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:08.54107953Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:09.542156142Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:10.543101422Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:11.544198969Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:12.545153548Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:13.545644164Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:14.546864015Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:15.548202164Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:16.549303292Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:17.549919041Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:18.55118857Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:19.551986629Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:20.552456617Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:21.553104447Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:22.554430391Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:23.555770596Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:24.557212726Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:25.557925924Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:26.559265169Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:27.560477664Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:28.561289748Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:29.561682641Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:30.562791135Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:31.563549168Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:32.564812389Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:33.565519648Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:34.566507355Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:35.567534066Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:36.568800072Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:37.570039348Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:38.570851272Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:39.571569089Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:40.572751881Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:41.573762736Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:42.574648108Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:43.57584338Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:44.576353498Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:45.576692459Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:46.577499658Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:47.578417593Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:48.579426373Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:49.580141394Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:50.581511336Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:51.582565552Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:52.583729497Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:53.584573272Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:54.585335161Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:55.586648798Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:56.587286002Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:57.587727577Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:58.588746785Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:06:59.589634164Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:00.590966056Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:01.592726515Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:02.593385481Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:03.593939935Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:04.595380405Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:05.596508803Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:06.597641659Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:07.598425184Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:08.599028139Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:09.599815412Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:10.600218567Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:11.601435067Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:12.602093616Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:13.602939072Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:14.604072952Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:15.604461404Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:16.60544173Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:17.606793354Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:18.607117202Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:19.608490751Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:20.609472932Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:21.610848957Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:22.611209569Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:23.612349368Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:24.613536917Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:25.614575178Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:26.615873625Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:27.617146364Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:28.617557009Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:29.618368594Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:30.619024212Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:31.620078747Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:32.621181215Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:33.621593498Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:34.622035626Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:35.623292955Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:36.624425788Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:37.625299569Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:38.626402167Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:39.627299254Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:40.628261778Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:41.629525831Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:42.630170219Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:43.6312957Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:44.632227856Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:45.63339653Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:46.634158525Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:47.635218737Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:48.635619602Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:49.636637309Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:50.63744964Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:51.638260562Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:52.638930111Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:53.639441739Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:54.640404079Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:55.641601915Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:56.642602491Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:57.643927784Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:58.644660476Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:07:59.64586509Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:00.646822078Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:01.652741514Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:02.653816656Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:03.655071605Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:04.656060488Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:05.657162527Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:06.658400134Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:07.659394592Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:08.660694439Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:09.661345901Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:10.662613253Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:11.663362401Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:12.664158528Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:13.664532644Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:14.665776476Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:15.666495719Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:16.667528968Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:17.668300928Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:18.669438858Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:19.67057674Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:20.67134443Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:21.672083373Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:22.672822361Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:23.673985016Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:24.674884257Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:25.675282192Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:26.676545952Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:27.677789282Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:28.678384239Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:29.679286165Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:30.680543174Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:31.681258468Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:32.682340356Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:33.683054927Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:34.684275412Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:35.685334476Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:36.68559643Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:37.686090702Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:38.687075023Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:39.687939855Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:40.688436501Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:41.689446451Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:42.690479467Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:43.690885437Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:44.691689256Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:45.692356896Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:46.693431297Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:47.694525346Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:48.69485891Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:49.695920468Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:50.696471998Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:51.697272834Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:52.698048918Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:53.699226102Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:54.700688878Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:55.701479261Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:56.702165389Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:57.702967707Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:58.704209797Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:08:59.705221454Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:00.705562509Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:01.707007291Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:02.708322056Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:03.709526816Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:04.710514186Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:05.711592825Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:06.712560125Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:07.713547801Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:08.714746596Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:09.715757637Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:10.716529436Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:11.717288664Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:12.718582069Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:13.71926833Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:14.720366416Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:15.721702486Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:16.722394197Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:17.723185426Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:18.724137024Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:19.725259727Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:20.725958134Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:21.726607117Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:22.727676526Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:23.728318858Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:24.729074046Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:25.729592873Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:26.730809897Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:27.731205027Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:28.731779453Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:29.733285233Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:30.734529779Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:31.735383946Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:32.735815352Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:33.737198592Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:34.737834815Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:35.738377959Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:36.738856819Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:37.73995298Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:38.741230318Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:39.742517381Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:40.74320929Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:41.744163894Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:42.744678214Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:43.745953971Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:44.747294814Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:45.748397719Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:46.749463809Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:47.750467821Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:48.751462533Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:49.75219571Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:50.753691826Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:51.75442464Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:52.755606033Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:53.757263288Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:54.758513562Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:55.758912879Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:56.759514409Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:57.760092867Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:58.760803299Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:09:59.761390965Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:00.762541789Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:01.763534278Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:02.767023223Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:03.767412423Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:04.768691019Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:05.769734543Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:06.770556025Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:07.77123257Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:08.771890371Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:09.772293639Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:10.773559938Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:11.774453008Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:12.775302068Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:13.776562022Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:14.777385942Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:15.777998767Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:16.77910751Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:17.779507972Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:18.780296823Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:19.78066491Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:20.781273249Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:21.782383814Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:22.783223863Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:23.783822998Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:24.784530334Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:25.785407123Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:26.785821294Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:27.787002597Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:28.788216265Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:29.789497247Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:30.789873576Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:31.790462086Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:32.791167647Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:33.79253745Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:34.793292443Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:35.794351589Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:36.794995304Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:37.795910435Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:38.797084704Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:39.798500586Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:40.799301972Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:41.800345606Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:42.800997528Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:43.80148837Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:44.802204779Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:45.802699808Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:46.803185785Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:47.80391227Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:48.804544165Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:49.805377905Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:50.806175196Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:51.80742589Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:52.808185969Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:53.808586172Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:54.809991902Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:55.811255889Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:56.812032006Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:57.812683465Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:58.813571518Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:10:59.814268805Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:00.815252543Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:01.816909658Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:02.81783684Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:03.819221632Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:04.820492895Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:05.821552699Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:06.822706432Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:07.823929312Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:08.824640371Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:09.825557773Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:10.826501105Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:11.827168596Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:12.828327317Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:13.829486091Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:14.830592706Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:15.831487603Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:16.832260242Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:17.833302611Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:18.834470097Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:19.83501478Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:20.835344961Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:21.835817628Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:22.837131939Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:23.838384936Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:24.838769982Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:25.840183135Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:26.84128149Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:27.842547734Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:28.843662467Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:29.846520047Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:30.847592692Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:31.849081912Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:32.849514643Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:33.850160065Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:34.851067596Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:35.851897689Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:36.852166627Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:37.853357172Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:38.854491509Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:39.855467495Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:40.856326987Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:41.859050977Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:42.860083128Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:43.861454461Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:44.862443488Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:45.86308198Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:46.863650245Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:47.864026177Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:48.865431869Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:49.866430061Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:50.867381151Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:51.868516444Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:52.869700821Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:53.870574085Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:54.871815461Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:55.87291829Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:56.873865878Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:57.875002283Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:58.876220036Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:11:59.877171614Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:00.878337665Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:01.878818458Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:02.88117143Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:03.882487652Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:04.883411742Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:05.884812083Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:06.885429539Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:07.88584568Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:08.887012742Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:09.888291145Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:10.889428519Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:11.890370849Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:12.891563206Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:13.892406135Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:14.893827983Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:15.895151763Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:16.896024665Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:17.896567171Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:18.897307425Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:19.897678026Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:20.898404037Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:21.899014211Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:22.900383964Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:23.901625548Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:24.904376348Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:25.905173394Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:26.906130369Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:27.906792246Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:28.908089572Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:29.909471644Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:30.910491337Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:31.910897667Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:32.911661696Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:33.913070558Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:34.914435996Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:35.915512097Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:36.916578877Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:37.917356954Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:38.918016707Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:39.919195159Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:40.919761968Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:41.920106113Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:42.920809193Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:43.921708265Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:44.922445214Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:45.923201821Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:46.924432125Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:47.925320986Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:48.926408879Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:49.927687094Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:50.928829693Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:51.92998382Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:52.931347263Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:53.932644803Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:54.933726101Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:55.935054352Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:56.935512992Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:57.936478021Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:58.936966814Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:12:59.939066821Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:00.939669815Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:01.942971645Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:02.943508041Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:03.94427602Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:04.945029727Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:05.945975842Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:06.947338831Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:07.947960801Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:08.948601016Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:09.949541352Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:10.950495624Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:11.951902212Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:12.953260706Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:13.953743104Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:14.954822477Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:15.956118622Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:16.957456972Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:17.95877224Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:18.959371828Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:19.960450494Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:20.961478387Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:21.961904038Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:22.962835484Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:23.963745084Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:24.964427995Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:25.965568102Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:26.966418915Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:27.967192443Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:28.96809369Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:29.969054817Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:30.970440574Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:31.971163842Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:32.971539531Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:33.972362378Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:34.9732632Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:35.973794044Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:36.974804177Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:37.975352864Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:38.976370164Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:39.977389636Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:40.977720639Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:41.97907893Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:42.979823582Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:43.980676977Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:44.981362935Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:45.982447694Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:46.982967697Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:47.983593308Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:48.984281468Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:49.985338427Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:50.985659591Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:51.987006238Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:52.987909536Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:53.988454072Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:54.989083307Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:55.989829615Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:56.99093874Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:57.992079736Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:58.992770045Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:13:59.993996613Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:00.995066448Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:01.995736792Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:02.996084931Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:03.997332858Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:04.99772189Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:05.998952543Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:06.999347621Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:08.000011157Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:09.000827072Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:10.001945593Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:11.00264626Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:12.00428363Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:13.005380942Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:14.006081083Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:15.007350334Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:16.007943589Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:17.0086842Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:18.009642216Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:19.010398482Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:20.011464133Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:21.01267775Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:22.013547711Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:23.014399053Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:24.015516615Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:25.016529042Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:26.017590511Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:27.018465244Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:28.0197496Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:29.020506407Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:30.021797026Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:31.022836862Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:32.024104852Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:33.025139302Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:34.025857101Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:35.026844167Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:36.027583849Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:37.027971289Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:38.028750502Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:39.029199247Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:40.029891795Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:41.030893798Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:42.032005156Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:43.032638927Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:44.033686415Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:45.034425557Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:46.035090651Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:47.035384544Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:48.035679472Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:49.03605817Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:50.036810341Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:51.037732007Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:52.038538505Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:53.039482795Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:54.039854614Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:55.040655099Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:56.041252336Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:57.042523596Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:58.043511416Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:14:59.043842746Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:00.045278749Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:01.04603989Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:02.046446829Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:03.047467662Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:04.0484681Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:05.049093698Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:06.050168797Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:07.050990222Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:08.052038014Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:09.05280615Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:10.053337501Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:11.053772788Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:12.054432155Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:13.055109584Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:14.056185961Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:15.057319369Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:16.058188662Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:17.059510406Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:18.060495546Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:19.061366359Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:20.062448646Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:21.063573372Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:22.064454596Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:23.0658186Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:24.066960716Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:25.067813702Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:26.068418041Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:27.069563125Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:28.07013401Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:29.071531434Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:30.072468289Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:31.072795882Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:32.073417137Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:33.074481712Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:34.075580749Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:35.077032107Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:36.077749064Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:37.079083304Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:38.079775722Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:39.081218026Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:40.082486798Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:41.08370779Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:42.084693367Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:43.085202462Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:44.085958371Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:45.086268157Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:46.086686029Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:47.087438941Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:48.088018538Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:49.088657362Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:50.089299699Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:51.090411623Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:52.091590442Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:53.092437442Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:54.093315766Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:55.093991693Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:56.095222236Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:57.096285429Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:58.097127645Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:15:59.097625329Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:00.098002359Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:01.098800323Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:02.100138987Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:03.101341932Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:04.102097309Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:05.103287112Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:06.104099048Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:07.104536967Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:08.105803528Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:09.106782395Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:10.107559126Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:11.108450897Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:12.109291607Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:13.110328117Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:14.111188354Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:15.111595859Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:16.112627726Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:17.1136823Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:18.114574733Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:19.115835219Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:20.11702093Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:21.117927316Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:22.118495973Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:23.119651485Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:24.120049482Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:25.12130456Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:26.122646043Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:27.123559632Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:28.124193541Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:29.124756592Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:30.126072159Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:31.127438758Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:32.128765886Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:33.129482562Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:34.130825137Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:35.132106958Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:36.132726264Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:37.133761244Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:38.134912358Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:39.135863643Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:40.136774731Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:41.137512985Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:42.138610268Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:43.139613364Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:44.140968159Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:45.142402101Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:46.143273298Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:47.14465358Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:48.145142568Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:49.14589492Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:50.146943354Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:51.147652924Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:52.148834083Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:53.149294027Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:54.150102898Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:55.151123523Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:56.152056803Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:57.153228929Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:58.153581561Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:16:59.15481233Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:00.156037465Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:01.162511484Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:02.163552493Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:03.164331386Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:04.16536491Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:05.166478855Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:06.167163304Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:07.168547508Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:08.169758429Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:09.170875888Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:10.171534004Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:11.172514765Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:12.17359135Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:13.174875867Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:14.176162159Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:15.177539501Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:16.17805812Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:17.178858922Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:18.180108341Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:19.181317338Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:20.182600539Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:21.183391162Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:22.184570001Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:23.185487714Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:24.185782473Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:25.186118311Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:26.187461543Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:27.18869717Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:28.189365866Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:29.189979859Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:30.191190159Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:31.192066657Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:32.193144982Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:33.193630262Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:34.19396266Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:35.194366049Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:36.19509637Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:37.195831255Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:38.197210732Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:39.197883643Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:40.198741333Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:41.200089793Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:42.201487049Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:43.202063939Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:44.202569046Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:45.203737872Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:46.20465768Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:47.206001986Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:48.207172262Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:49.208301443Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:50.209491516Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:51.210575988Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:52.211550824Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:53.212259698Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:54.213376296Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:55.214422177Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:56.215144679Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:57.216478845Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:58.217279907Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:17:59.2184617Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:00.219175693Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:01.220614777Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:02.221616867Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:03.223251097Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:04.223752428Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:05.224591662Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:06.225679923Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:07.226466743Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:08.226972529Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:09.228219178Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:10.229596451Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:11.230459724Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:12.231746243Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:13.232210755Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:14.233294676Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:15.234421355Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:16.235192263Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:17.235658391Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:18.236469016Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:19.237255007Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:20.238385067Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:21.239174548Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:22.240301661Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:23.240967641Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:24.241855539Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:25.242211179Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:26.243490285Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:27.244203324Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:28.245193639Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:29.24555204Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:30.246443588Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:31.247213846Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:32.24783775Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:33.248619425Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:34.249346166Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:35.250368771Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:36.251489993Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:37.25245005Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:38.253166625Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:39.254397798Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:40.255212275Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:41.256167852Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:42.257389217Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:43.258345455Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:44.259123799Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:45.260354412Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:46.261099472Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:47.262029317Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:48.262829172Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:49.263443186Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:50.264306184Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:51.265543408Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:52.265914375Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:53.266828855Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:54.267268663Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:55.267696554Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:56.268386101Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:57.268965585Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:58.269303204Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:18:59.270700844Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:00.272076132Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:01.274829628Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:02.276015931Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:03.277116912Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:04.278387066Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:05.279789726Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:06.280540292Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:07.281279739Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:08.282633443Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:09.283473718Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:10.284295505Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:11.28563885Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:12.285937406Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:13.286328097Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:14.287516252Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:15.288482655Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:16.289366202Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:17.290730211Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:18.291806193Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:19.29233619Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:20.293286948Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:21.293898553Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:22.294978698Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:23.295799244Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:24.296188872Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:25.296906512Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:26.29817948Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:27.298865469Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:28.300052859Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:29.301093871Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:30.301406353Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:31.301840394Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:32.303095742Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:33.304479027Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:34.305257625Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:35.306501522Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:36.307087048Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:37.307433731Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:38.307842797Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:39.308685063Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:40.309285566Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:41.310460988Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:42.311039753Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:43.31226981Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:44.313391688Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:45.31453743Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:46.315178056Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:47.315703738Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:48.316674454Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:49.317521321Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:50.318522301Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:51.319518845Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:52.320541686Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:53.321641815Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:54.322500122Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:55.323841058Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:56.324230329Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:57.324584272Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:58.325563025Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:19:59.326768735Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:00.328443103Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:01.329927346Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:02.330689713Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:03.332305373Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:04.333583163Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:05.334882961Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:06.335891879Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:07.338303884Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:08.339459264Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:09.339841892Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:10.340480155Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:11.341268324Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:12.342412084Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:13.343135402Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:14.343951755Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:15.344661624Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:16.345295661Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:17.345929958Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:18.347270183Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:19.348098617Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:20.348663435Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:21.349980231Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:22.351006533Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:23.351303222Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:24.352417366Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:25.353368265Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:26.354456479Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:27.355363269Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:28.35626323Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:29.357283293Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:30.358435468Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:31.359398011Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:32.359991064Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:33.361277671Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:34.362417841Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:35.36367378Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:36.364956198Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:37.365850169Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:38.367079658Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:39.368379223Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:40.369276303Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:41.370016283Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:42.370706061Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:43.371393045Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:44.372327451Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:45.373267921Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:46.374011328Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:47.374390312Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:48.375168605Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:49.376113704Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:50.377207459Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:51.378512179Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:52.379693642Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:53.380451343Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:54.381795048Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:55.383089158Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:56.384051392Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:57.385289713Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:58.385676157Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:20:59.38658313Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:00.387640373Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:01.387949233Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:02.389309083Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:03.3898838Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:04.39108735Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:05.392356564Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:06.393473499Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:07.394097593Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:08.395153923Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:09.395972214Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:10.397330097Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:11.398072422Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:12.399200644Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:13.399979759Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:14.401281539Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:15.403189276Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:16.404460281Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:17.405297019Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:18.40646005Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:19.407093863Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:20.408252843Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:21.409287483Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:22.410394019Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:23.410707846Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:24.411096357Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:25.412274481Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:26.413471077Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:27.414062437Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:28.414930628Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:29.415678917Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:30.416496965Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:31.417157977Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:32.418259815Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:33.41863222Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:34.419218968Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:35.419818636Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:36.42129159Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:37.422464964Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:38.423060298Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:39.424273895Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:40.424814446Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:41.425654446Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:42.426386197Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:43.427050042Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:44.428374911Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:45.429198622Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:46.429917925Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:47.430773847Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:48.431685136Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:49.432493478Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:50.433116955Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:51.434178896Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:52.435541946Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:53.435859809Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:54.436652491Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:55.437270479Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:56.438526691Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:57.439087743Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:58.440152552Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:21:59.190291167Z","level":"WARN","msg":"livefeed: client read error","error":"websocket: close 1005 (no status)","service":"config-service"}
{"time":"2026-05-16T20:21:59.440681936Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:00.441621013Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:01.442738941Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:02.44412451Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:03.445347112Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:04.445916286Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:05.446897262Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:06.447582Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:07.448653908Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:08.450072461Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:09.450667858Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:10.451600022Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:11.451987082Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:12.452553305Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:13.453274935Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:14.45408901Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:15.454941222Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:16.456151551Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:17.457337144Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:18.458527978Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:19.459106235Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:20.460059973Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:21.461087814Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:22.461548174Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:23.46239492Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:24.463355722Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:25.464015091Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:26.465017045Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:27.466050105Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:28.466980822Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:29.468364035Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:30.469349947Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:31.470434796Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:32.471496184Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:33.472669157Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:34.473155994Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:35.473978762Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:36.47443593Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:37.474786376Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:38.476115994Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:39.477342052Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:40.477795727Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:41.478696413Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:42.479965711Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:43.481348884Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:44.482735685Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:45.484092721Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:46.484541289Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:47.485274033Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:48.485755033Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:49.486089896Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:50.486841151Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:51.487268945Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:52.488134928Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:53.489348438Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:54.489802039Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:55.490142422Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:56.490779968Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:57.491495997Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:58.492979061Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:22:59.493960253Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:00.494515317Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:01.49544705Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:02.496106068Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:03.497308946Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:04.497990441Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:05.499092092Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:06.500202952Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:07.5013315Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:08.502108402Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:09.50342427Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:10.504559851Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:11.505029405Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:12.505610121Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:13.50635867Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:14.507765257Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:15.508655693Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:16.509335442Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:17.510016156Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:18.510940573Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:19.511777979Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:20.512927647Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:21.513539439Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:22.514914739Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:23.516302261Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:24.51662422Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:25.517138119Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:26.518362304Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:27.518788414Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:28.519359596Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:29.520158246Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:30.520759054Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:31.521292104Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:32.521952096Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:33.522395129Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:34.523628252Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:35.524048952Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:36.524686927Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:37.525523075Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:38.525985718Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:39.52640224Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:40.527310531Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:41.528523392Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:42.529283372Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:43.529946025Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:44.530349745Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:45.531536096Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:46.532257518Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:47.53289271Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:48.533573554Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:49.53453813Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:50.535087267Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:51.535600137Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:52.535877719Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:53.537109305Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:54.537409701Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:55.538770131Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:56.539497715Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:57.540934238Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:58.54142488Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:23:59.542163441Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:00.543272453Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:01.544179466Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:02.544932691Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:03.546408343Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:04.547383761Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:05.548020305Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:06.54916732Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:07.550309698Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:08.551212303Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:09.551544426Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:10.553054163Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:11.554452163Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:12.555182451Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:13.555652553Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:14.556548629Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:15.557488095Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:16.558140934Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:17.559366675Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:18.560292122Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:19.561546916Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:20.562783019Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:21.563392838Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:22.564765465Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:23.565345048Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:24.56661529Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:25.567131943Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:26.567510999Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:27.568561607Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:28.569313787Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:29.570519764Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:30.57191317Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:31.573183112Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:32.573961921Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:33.574735122Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:34.576200879Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:35.577364259Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:36.57859941Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:37.57929251Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:38.580399102Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:39.581401706Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:40.582703645Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:41.583954885Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:42.585337826Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:43.585712179Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:44.586004645Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:45.587002451Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:46.588090682Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:47.589203041Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:48.590053554Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:49.59038609Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:50.591169994Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:51.591717523Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:52.592983001Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:53.593369525Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:54.593876461Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:55.59485694Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:56.595246393Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:57.596289705Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:58.597014391Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:24:59.597362394Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:00.598107148Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:01.598564035Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:02.600932876Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:03.601616652Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:04.60269881Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:05.603643607Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:06.604199817Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:07.605045176Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:08.60600136Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:09.607213419Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:10.608545713Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:11.609819674Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:12.610860912Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:13.611367123Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:14.612295241Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:15.613501185Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:16.614477612Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:17.615170526Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:18.616498323Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:19.617025666Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:20.617405281Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:21.617729425Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:22.61902403Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:23.619699767Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:24.620699063Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:25.621693524Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:26.623030709Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:27.623454944Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:28.624299851Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:29.625035538Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:30.62536204Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:31.626370833Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:32.627069401Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:33.628186642Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:34.629181609Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:35.630606007Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:36.631509623Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:37.632089897Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:38.633411206Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:39.633791028Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:40.634524046Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:41.635065389Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:42.635590139Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:43.635926732Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:44.637249883Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:45.637869275Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:46.638627715Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:47.639939833Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:48.641231819Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:49.641816042Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:50.642499668Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:51.643526263Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:52.644045612Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:53.644593907Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:54.64528353Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:55.646160868Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:56.647259773Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:57.64825917Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:58.648752901Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:25:59.649625713Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:00.650474786Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:01.651608209Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:02.653252275Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:03.656132459Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:04.657458895Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:05.65846959Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:06.65881861Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:07.659604787Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:08.660037605Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:09.660690732Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:10.66146739Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:11.662127289Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:12.663463193Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:13.664108129Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:14.664765695Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:15.666085826Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:16.667423984Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:17.668449833Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:18.669531193Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:19.670534359Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:20.671181001Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:21.67241818Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:22.673461178Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:23.674402715Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:24.674735465Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:25.675853916Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:26.676712408Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:27.678002Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:28.679091483Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:29.680060105Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:30.681352539Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:31.682355865Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:32.683542381Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:33.684398011Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:34.685262352Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:35.685993331Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:36.687016846Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:37.687876972Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:38.688293541Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:39.688721211Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:40.689213873Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:41.689753735Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:42.690740661Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:43.691621438Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:44.69219601Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:45.692741016Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:46.693898031Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:47.694927479Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:48.69580634Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:49.69659518Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:50.69727973Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:51.698337677Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:52.698991856Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:53.700147203Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:54.70127095Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:55.701935104Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:56.703297538Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:57.704151249Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:58.705142436Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:26:59.706435341Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:00.70750739Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:01.709193778Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:02.710705604Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:03.71165295Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:04.712577959Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:05.713518448Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:06.71396824Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:07.714381145Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:08.715694948Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:09.717118178Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:10.718129262Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:11.71880256Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:12.719969896Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:13.72096326Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:14.72229675Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:15.723274465Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:16.723619628Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:17.724291384Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:18.725739408Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:19.726527255Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:20.727484677Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:21.728440163Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:22.72949504Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:23.730475819Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:24.731549801Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:25.732038354Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:26.733432798Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:27.73415094Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:28.735603499Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:29.737089654Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:30.737953201Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:31.739154104Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:32.739554667Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:33.74036351Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:34.74159618Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:35.74239974Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:36.743424255Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:37.744670911Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:38.745435043Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:39.745853653Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:40.746535519Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:41.746898082Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:42.747533186Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:43.747848021Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:44.748469553Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:45.749409176Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:46.750380358Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:47.751463161Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:48.752528764Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:49.753470183Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:50.753869488Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:51.754371652Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:52.755388521Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:53.756383479Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:54.757290737Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:55.757645192Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:56.758415351Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:57.759356649Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:58.760049651Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:27:59.761020947Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:00.762342386Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:01.766103759Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:02.76773237Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:03.768742144Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:04.769390715Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:05.770480191Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:06.771407876Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:07.771983142Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:08.773458754Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:09.774834382Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:10.775554667Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:11.77713148Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:12.778003817Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:13.779469123Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:14.780141222Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:15.781459157Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:16.782852706Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:17.783753325Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:18.784368827Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:19.785873791Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:20.787008376Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:21.787884506Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:22.789126937Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:23.79005104Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:24.791137958Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:25.792512461Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:26.793314946Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:27.793879916Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:28.795304822Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:29.796470676Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:30.797610333Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:31.798998705Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:32.800156833Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:33.801517821Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:34.802189438Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:35.803431073Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:36.804149175Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:37.80467167Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:38.805317944Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:39.806395803Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:40.80748504Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:41.80853159Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:42.809050575Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:43.8097304Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:44.810503842Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:45.811282891Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:46.811885803Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:47.812729515Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:48.813531822Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:49.814386989Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:50.815619754Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:51.8163725Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:52.817655622Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:53.818019816Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:54.818363219Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:55.819390297Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:56.820271213Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:57.821498151Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:58.822334901Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:28:59.823554437Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:00.824777937Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:01.826167711Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:02.826595121Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:03.827506156Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:04.828153118Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:05.829283925Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:06.829987848Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:07.831317001Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:08.8324208Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:09.833544678Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:10.834382883Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:11.835205019Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:12.835481906Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:13.835875426Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:14.83674536Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:15.838689736Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:16.83958038Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:17.840431626Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:18.842864042Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:19.844460123Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:20.845689462Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:21.846654829Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:22.847896277Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:23.849047621Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:24.850336694Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:25.851042717Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:26.852265462Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:27.853114278Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:28.853778958Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:29.854547787Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:30.855163286Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:31.855827842Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:32.856465709Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:33.857391543Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:34.858402538Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:35.858942014Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:36.859337191Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:37.859958887Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:38.86035009Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:39.861486688Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:40.862356293Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:41.863383587Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:42.864115724Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:43.865312532Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:44.865707417Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:45.866451607Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:46.867828608Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:47.868425093Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:48.869432381Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:49.870084386Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:50.871148315Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:51.872357909Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:52.873386345Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:53.87455005Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:54.875303914Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:55.87658506Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:56.877550884Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:57.878376157Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:58.879298798Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:29:59.88048979Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:00.881738716Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:01.882705887Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:02.883362193Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:03.884602087Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:04.885609596Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:05.885901901Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:06.888555868Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:07.889880556Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:08.891284477Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:09.892075303Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:10.893297893Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:11.894555572Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:12.894952652Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:13.896292308Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:14.897471235Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:15.898267432Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:16.8988931Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:17.899588326Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:18.900280482Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:19.901534057Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:20.902019777Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:21.903066122Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:22.903429254Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:23.904424331Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:24.905283457Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:25.906364994Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:26.907638313Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:27.908765289Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:28.910059468Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:29.910934441Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:30.912078285Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:31.91342575Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:32.914022984Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:33.914762124Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:34.915883827Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:35.916485234Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:36.917819926Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:37.919261823Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:38.920451762Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:39.921185123Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:40.922498918Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:41.9235979Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:42.924450893Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:43.925075917Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:44.926177226Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:45.927354577Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:46.927994179Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:47.92839051Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:48.929206468Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:49.930383109Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:50.931098453Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:51.93149871Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:52.931858656Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:53.933114045Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:54.934143263Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:55.934575115Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:56.935830788Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:57.937156582Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:58.937957627Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:30:59.938711897Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:00.93932585Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:01.940879991Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:02.941314178Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:03.942509316Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:04.942863093Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:05.943620118Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:06.945111472Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:07.946401003Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:08.947663773Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:09.948455282Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:10.949361819Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:11.950193479Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:12.951120874Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:13.951847077Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:14.952782492Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:15.955463204Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:16.956603159Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:17.957833909Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:18.958882133Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:19.959457769Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:20.960131405Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:21.961253033Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:22.961852727Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:23.963044125Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:24.963603577Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:25.96507917Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:26.966365671Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:27.967408274Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:28.968290405Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:29.96960871Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:30.970357806Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:31.97165955Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:32.972775172Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:33.973598077Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:34.974621093Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:35.975018473Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:36.97606883Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:37.976455745Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:38.977833863Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:39.978538249Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:40.979902909Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:41.981000461Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:42.982114286Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:43.983032106Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:44.984380762Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:45.984744086Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:46.985371686Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:47.985754295Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:48.986301818Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:49.986919567Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:50.987396868Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:51.988614586Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:52.989137181Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:53.99041051Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:54.990996135Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:55.992113374Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:56.992835213Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:57.994069181Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:58.994702738Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:31:59.995248564Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:00.996265685Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:01.99783396Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:02.998929538Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:03.999904409Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:05.001192005Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:06.002402931Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:07.002983747Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:08.004047777Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:09.005369174Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:10.006522067Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:11.007525251Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:12.00859321Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:13.009998962Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:14.011349169Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:15.012183298Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:16.01281165Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:17.013538369Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:18.01396788Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:19.014825816Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:20.015716229Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:21.016539722Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:22.017454782Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:23.018269432Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:24.019009466Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:25.019760412Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:26.020324365Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:27.021532503Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:28.022784922Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:29.024176225Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:30.025611436Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:31.026354986Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:32.027288698Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:33.027856598Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:34.028532716Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:35.029269368Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:36.030350406Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:37.031749464Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:38.032524091Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:39.033273548Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:40.034653535Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:41.035203176Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:42.035589681Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:43.035867859Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:44.036268363Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:45.037116727Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:46.037980717Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:47.038497029Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:48.039380776Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:49.04000549Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:50.041394459Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:51.042385271Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:52.042997192Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:53.043411897Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:54.044263048Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:55.045560718Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:56.046137724Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:57.046535355Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:58.047297967Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:32:59.048081817Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:00.050921163Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:01.051947796Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:02.053271018Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:03.054692883Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:04.055472531Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:05.056135579Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:06.056547885Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:07.057227437Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:08.057950219Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:09.058767176Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:10.060120143Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:11.061200909Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:12.062145621Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:13.063126467Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:14.06419958Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:15.064770784Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:16.066053786Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:17.066513023Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:18.06713115Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:19.068142236Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:20.069439278Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:21.070546286Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:22.071370523Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:23.071787241Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:24.072615481Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:25.073783699Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:26.074143816Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:27.074623985Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:28.075267383Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:29.076032867Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:30.076945792Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:31.077832629Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:32.078608486Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:33.079522813Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:34.080201652Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:35.080776056Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:36.081755767Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:37.0824041Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:38.082774758Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:39.08313218Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:40.08452162Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:41.085893406Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:42.086907005Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:43.087672896Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:44.087975898Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:45.088468545Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:46.089088589Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:47.089409123Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:48.089692876Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:49.090303108Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:50.090989099Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:51.092282202Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:52.093406033Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:53.094370306Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:54.094997488Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:55.096113433Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:56.096489245Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:57.097154686Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:58.09809671Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:33:59.098487547Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:00.099724561Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:01.100066698Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:02.10160684Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:03.102673694Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:04.103257067Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:05.104094453Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:06.105047467Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:07.106463159Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:08.107368826Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:09.107703522Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:10.108546158Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:11.109358251Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:12.112291989Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:13.113298596Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:14.114177027Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:15.115540733Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:16.116933517Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:17.117699846Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:18.118470514Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:19.119275059Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:20.120229508Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:21.121545048Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:22.122224175Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:23.122664879Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:24.123233248Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:25.123671109Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:26.125191132Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:27.126060615Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:28.127001174Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:29.12822825Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:30.12858065Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:31.129351226Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:32.13013685Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:33.131432208Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:34.132478857Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:35.133715906Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:36.134399926Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:37.135777066Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:38.136576189Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:39.137268078Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:40.138153659Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:41.139384909Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:42.139897219Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:43.141271462Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:44.142571643Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:45.143631101Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:46.144471624Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:47.145602168Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:48.146504191Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:49.147167583Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:50.148145512Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:51.149125976Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:52.149973666Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:53.150690037Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:54.15135466Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:55.152270956Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:56.153467631Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:57.154417805Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:58.155030166Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:34:59.156064526Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:00.157611248Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:01.159466046Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:02.161391473Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:03.162161465Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:04.162822556Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:05.163563525Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:06.16448093Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:07.165415337Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:08.166409721Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:09.167438663Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:10.168351836Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:11.169369719Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:12.169973356Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:13.17138864Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:14.172041082Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:15.172733333Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:16.173471522Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:17.174540345Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:18.175779704Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:19.177176621Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:20.178147454Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:21.179154669Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:22.180022028Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:23.181154182Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:24.18356694Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:25.184287242Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:26.185933219Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:27.186932097Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:28.188014651Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:29.188953825Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:30.189982851Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:31.190931928Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:32.192359297Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:33.193282Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:34.194444625Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:35.195286276Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:36.196282912Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:37.197054945Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:38.197405Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:39.197992857Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:40.199060644Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:41.19966525Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:42.200603923Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:43.202001948Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:44.202417134Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:45.203257215Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:46.204465149Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:47.205306834Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:48.206367737Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:49.207174694Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:50.208344594Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:51.209470955Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:52.2103952Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:53.211494333Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:54.212468889Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:55.213189116Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:56.213988851Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:57.215170974Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:58.215754943Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:35:59.217145315Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:00.218492531Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:01.219857592Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:02.221103203Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:03.221564908Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:04.222905457Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:05.223542347Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:06.225625909Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:07.226459832Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:08.227494599Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:09.228130643Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:10.229233846Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:11.230483096Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:12.231298223Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:13.232589637Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:14.233075906Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:15.234480909Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:16.23584425Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:17.237226964Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:18.237518383Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:19.238495507Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:20.239133851Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:21.239530617Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:22.240644896Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:23.241871507Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:24.242901247Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:25.243607801Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:26.244142879Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:27.245062401Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:28.246174861Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:29.246830201Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:30.247891881Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:31.248297908Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:32.249284581Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:33.250412735Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:34.251211196Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:35.252071071Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:36.252536231Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:37.25352768Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:38.254783499Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:39.255384172Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:40.256099994Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:41.257368645Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:42.258093455Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:43.259298246Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:44.25969476Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:45.261207259Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:46.262559386Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:47.263094446Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:48.263498008Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:49.264212082Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:50.265616627Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:51.266454166Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:52.266906053Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:53.26797494Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:54.268884861Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:55.26984425Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:56.271069995Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:57.272384744Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:58.273255731Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:36:59.275428312Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:00.276579292Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:01.277735979Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:02.278411639Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:03.279659691Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:04.280196639Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:05.281295889Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:06.282460349Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:07.283361493Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:08.283759144Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:09.284772883Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:10.285353606Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:11.285610331Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:12.286822868Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:13.287719394Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:14.289095895Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:15.289849476Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:16.290925706Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:17.292321043Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:18.293125012Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:19.294487562Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:20.294992367Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:21.295304295Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:22.296142916Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:23.297508964Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:24.29839614Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:25.299511085Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:26.300633821Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:27.301376415Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:28.302025271Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:29.30341189Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:30.30442223Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:31.305251505Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:32.306418993Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:33.307390724Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:34.308199936Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:35.30951195Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:36.310194935Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:37.311579692Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:38.312580244Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:39.313682824Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:40.314431999Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:41.315644276Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:42.316929218Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:43.31825958Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:44.31920404Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:45.320512785Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:46.321653763Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:47.323020144Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:48.323715528Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:49.324671008Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:50.325946826Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:51.327057708Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:52.327391594Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:53.32807365Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:54.329473803Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:55.330081829Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:56.331408651Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:57.332055897Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:58.333035108Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:37:59.333621058Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:00.334512562Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:01.335096074Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:02.335636367Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:03.335903562Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:04.337298486Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:05.338252412Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:06.339129967Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:07.340476866Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:08.341571221Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:09.342569987Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:10.343881779Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:11.344696365Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:12.345211845Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:13.345893493Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:14.346651856Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:15.347899129Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:16.34922071Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:17.350367221Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:18.351593197Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:19.352413522Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:20.353157078Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:21.353491907Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:22.35479898Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:23.355623634Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:24.356406597Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:25.357690136Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:26.358415051Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:27.359532347Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:28.360756393Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:29.361793176Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:30.362781152Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:31.363371406Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:32.364435222Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:33.365196209Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:34.366425205Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:35.366988722Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:36.368101813Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:37.36932279Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:38.370546078Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:39.371756848Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:40.37332859Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:41.374483122Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:42.375691962Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:43.376307431Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:44.377428475Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:45.377947795Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:46.378475604Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:47.379682148Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:48.380975405Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:49.38170706Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:50.382479567Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:51.38355362Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:52.383950703Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:53.384644046Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:54.385400221Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:55.385745603Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:56.386164967Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:57.387281652Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:58.388461495Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:38:59.389386867Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:00.390060146Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:01.391465286Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:02.392563328Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:03.393765326Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:04.395110365Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:05.395474211Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:06.396399428Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:07.397517195Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:08.398145908Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:09.399045078Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:10.400332711Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:11.401107534Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:12.402173341Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:13.402520174Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:14.403082708Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:15.403603334Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:16.404619764Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:17.405284174Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:18.406167656Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:19.407146289Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:20.408541829Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:21.409196912Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:22.409768625Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:23.410201737Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:24.410934819Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:25.411839295Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:26.412204286Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:27.414039433Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:28.415350681Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:29.415860467Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:30.416485412Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:31.417168056Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:32.417999971Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:33.419248549Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:34.420450445Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:35.421256321Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:36.422205544Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:37.423510458Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:38.424264497Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:39.424958861Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:40.425621617Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:41.425943115Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:42.427019396Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:43.428264821Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:44.429223164Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:45.429665529Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:46.430017269Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:47.430770299Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:48.431521057Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:49.432084244Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:50.432427187Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:51.433303527Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:52.434147871Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:53.435274299Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:54.435637141Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:55.43669076Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:56.437198622Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:57.43874851Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:58.439393217Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:39:59.440253572Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:00.441915354Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:01.443032515Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:02.444625062Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:03.445470419Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:04.446637909Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:05.44774641Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:06.448366092Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:07.449247987Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:08.449590809Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:09.450384429Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:10.451055975Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:11.451893956Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:12.452264668Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:13.453281206Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:14.45441457Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:15.455407305Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:16.456357856Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:17.457627326Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:18.458489149Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:19.459821301Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:20.460662446Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:21.461883753Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:22.463019946Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:23.464354202Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:24.465249516Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:25.465617188Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:26.467017592Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:27.467844021Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:28.468527861Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:29.469498414Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:30.470815438Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:31.471839306Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:32.473200357Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:33.473550588Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:34.474578224Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:35.475706992Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:36.477227863Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:37.47801342Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:38.479180097Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:39.480604168Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:40.481363861Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:41.482414148Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:42.483625358Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:43.485012559Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:44.485391853Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:45.485665485Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:46.486971651Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:47.488284592Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:48.488643508Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:49.489207896Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:50.490066613Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:51.490457948Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:52.490966771Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:53.492186967Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:54.493536697Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:55.494293548Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:56.49480953Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:57.49614615Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:58.496474611Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:40:59.497225955Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:00.498697496Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:01.499622567Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:02.500985063Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:03.501683256Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:04.502713586Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:05.503724655Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:06.504502734Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:07.50527842Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:08.50640242Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:09.507533251Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:10.508074107Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:11.509121242Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:12.50971412Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:13.510546284Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:14.510916461Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:15.511484037Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:16.512960799Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:17.514006796Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:18.514753985Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:19.515147293Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:20.516466121Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:21.517743425Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:22.518584402Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:23.519765776Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:24.520491369Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:25.521467006Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:26.522374156Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:27.523147014Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:28.523548805Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:29.524487641Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:30.525163874Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:31.526002346Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:32.526914351Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:33.528114118Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:34.528620347Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:35.529275683Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:36.53007662Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:37.531222621Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:38.532230283Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:39.533006981Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:40.533626265Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:41.534509716Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:42.535878425Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:43.536668421Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:44.53719464Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:45.537600204Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:46.538802418Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:47.539763706Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:48.540796749Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:49.541551379Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:50.542153903Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:51.542521355Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:52.543866358Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:53.545560176Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:54.546633958Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:55.547518409Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:56.548796509Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:57.549649209Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:58.550470941Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:41:59.551045321Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:00.551668715Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:01.55312476Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:02.554122432Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:03.555294182Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:04.556188449Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:05.556567636Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:06.557480694Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:07.558728535Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:08.560018031Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:09.561216683Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:10.561656506Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:11.562419763Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:12.562748375Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:13.563974733Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:14.564461418Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:15.565190294Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:16.56576659Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:17.567026134Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:18.568032522Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:19.568472051Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:20.569511179Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:21.57017254Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:22.570533387Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:23.571488633Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:24.572155294Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:25.573489775Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:26.574532346Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:27.57515036Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:28.576130999Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:29.576997688Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:30.577503052Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:31.578685043Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:32.580107253Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:33.58109363Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:34.58168403Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:35.583019308Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:36.583755974Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:37.585248171Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:38.58603784Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:39.587176354Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:40.587478952Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:41.587976455Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:42.58845164Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:43.589084309Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:44.590355892Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:45.590848173Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:46.592101715Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:47.5935077Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:48.593854407Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:49.595189886Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:50.597000909Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:51.597401045Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:52.59808028Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:53.598874284Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:54.599801238Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:55.600302298Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:56.601541406Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:57.602020091Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:58.603179917Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:42:59.604180781Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:00.605016459Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:01.605939235Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:02.606740322Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:03.607971718Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:04.608557639Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:05.609555573Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:06.610462638Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:07.611160901Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:08.611905666Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:09.612461796Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:10.612783051Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:11.614144258Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:12.61480337Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:13.615483553Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:14.616500312Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:15.617455519Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:16.618105155Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:17.618496578Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:18.6195261Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:19.620474395Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:20.621038Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:21.621458637Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:22.622357166Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:23.622699585Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:24.623282339Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:25.623770531Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:26.624643686Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:27.625177919Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:28.626174627Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:29.626980104Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:30.627412637Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:31.628124354Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:32.629255732Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:33.63064093Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:34.631312208Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:35.632223605Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:36.633369266Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:37.633787257Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:38.634967832Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:39.635792204Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:40.636729381Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:41.637812504Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:42.638766302Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:43.639802246Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:44.640818742Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:45.64128188Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:46.641838704Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:47.642176375Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:48.643139934Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:49.644175701Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:50.645448246Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:51.646030429Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:52.646394115Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:53.647554487Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:54.649112623Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:55.649920292Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:56.650620467Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:57.651528101Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:58.653066051Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:43:59.654389902Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:00.656100706Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:01.658029502Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:02.659404971Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:03.660459748Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:04.661528355Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:05.662423655Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:06.663086686Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:07.663570629Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:08.664585184Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:09.665247303Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:10.66630309Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:11.667380506Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:12.668409533Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:13.668904082Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:14.670182628Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:15.6713014Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:16.67187552Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:17.672315172Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:18.67329146Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:19.673868296Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:20.674292907Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:21.675109003Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:22.676291143Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:23.677632108Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:24.678923341Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:25.679672213Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:26.680064331Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:27.681437113Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:28.681955663Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:29.683199851Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:30.68435819Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:31.685555886Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:32.686215711Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:33.686969366Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:34.687945839Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:35.688444043Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:36.689545757Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:37.690391216Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:38.691464034Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:39.691970916Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:40.692783898Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:41.693393562Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:42.69428862Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:43.694919877Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:44.696045967Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:45.697304778Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:46.698435851Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:47.698954149Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:48.70000908Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:49.701296105Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:50.702105805Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:51.703041057Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:52.704117994Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:53.705496646Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:54.706183421Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:55.706736361Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:56.707056647Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:57.708492691Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:58.709789681Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:44:59.711055776Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:00.712110771Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:01.71297802Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:02.713560042Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:03.714768064Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:04.715648824Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:05.716299816Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:06.717686051Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:07.718385369Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:08.719320818Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:09.71969022Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:10.720543684Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:11.721150322Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:12.72206442Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:13.722724491Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:14.723117267Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:15.723736454Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:16.724719884Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:17.725489139Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:18.726357197Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:19.72725779Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:20.727595509Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:21.728521932Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:22.729502471Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:23.730559583Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:24.731644785Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:25.73227762Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:26.733099836Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:27.734184181Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:28.734658362Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:29.735226018Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:30.735829879Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:31.737098073Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:32.737677851Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:33.738788415Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:34.739110419Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:35.740398886Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:36.74112889Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:37.74243003Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:38.743024957Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:39.743642882Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:40.745075986Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:41.745866867Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:42.746840001Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:43.747512475Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:44.74806367Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:45.748664591Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:46.749257571Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:47.750399119Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:48.750801982Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:49.751838242Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:50.752364635Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:51.753022081Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:52.753755778Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:53.754413937Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:54.754949927Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:55.755290241Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:56.755889746Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:57.756710839Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:58.757347724Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:45:59.757982554Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:00.759385975Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:01.760791631Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:02.761992653Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:03.762595239Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:04.763310981Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:05.76432522Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:06.765078276Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:07.766436925Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:08.767062897Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:09.768143424Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:10.769288432Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:11.77017179Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:12.771132499Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:13.772405055Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:14.773104376Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:15.774486947Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:16.775274738Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:17.776065091Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:18.776623619Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:19.777086354Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:20.778429021Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:21.778865342Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:22.779804103Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:23.780353772Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:24.781536876Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:25.782081536Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:26.783006254Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:27.784216565Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:28.785201972Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:29.785501578Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:30.785890299Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:31.786180421Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:32.786909919Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:33.787324711Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:34.788107522Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:35.789245999Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:36.790504534Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:37.791518357Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:38.79261712Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:39.793302605Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:40.794071728Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:41.795047014Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:42.796057145Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:43.797384132Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:44.79808993Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:45.798407989Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:46.798915346Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:47.799648981Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:48.800302177Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:49.801172297Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:50.802151702Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:51.802468065Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:52.803132136Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:53.803822258Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:54.804301085Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:55.805502145Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:56.806047217Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:57.807285182Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:58.808497044Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:46:59.808951042Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:00.809769903Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:01.811142335Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:02.81253047Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:03.813670197Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:04.814838621Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:05.81560121Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:06.816379518Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:07.817521589Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:08.81817127Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:09.818549829Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:10.819278951Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:11.820005933Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:12.821275479Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:13.822410018Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:14.823502927Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:15.824126997Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:16.825284182Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:17.826024322Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:18.826655852Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:19.827497691Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:20.827867043Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:21.828784196Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:22.830047471Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:23.830930555Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:24.83135242Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:25.832181356Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:26.833308774Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:27.833877994Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:28.834540463Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:29.835184439Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:30.835544719Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:31.835856218Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:32.837163811Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:33.838463147Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:34.83981439Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:35.84018232Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:36.840564141Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:37.84129441Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:38.841811948Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:39.84220066Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:40.843278325Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:41.84468476Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:42.846079328Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:43.847250175Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:44.84828105Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:45.848607707Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:46.84976497Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:47.850389454Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:48.851292451Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:49.852340313Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:50.8532751Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:51.853933671Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:52.854548559Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:53.855301671Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:54.856275561Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:55.857184287Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:56.858417407Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:57.858747432Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:58.859305432Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:47:59.859621155Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:00.861103718Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:01.864577096Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:02.866048717Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:03.866915846Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:04.867359437Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:05.867973074Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:06.869324575Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:07.870574024Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:08.871840993Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:09.872517872Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:10.873444513Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:11.874034826Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:12.87497862Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:13.876113834Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:14.876592142Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:15.877765207Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:16.878574659Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:17.87900371Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:18.880303107Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:19.880707898Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:20.881296849Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:21.882294545Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:22.883599699Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:23.884501766Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:24.885661054Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:25.886817927Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:26.887172614Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:27.888476941Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:28.889223489Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:29.88994675Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:30.890356278Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:31.891403184Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:32.892017715Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:33.892988836Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:34.894022713Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:35.894944605Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:36.896062699Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:37.897354322Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:38.898679216Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:39.89953212Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:40.900475473Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:41.90100355Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:42.902387322Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:43.903455958Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:44.904528677Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:45.905185908Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:46.906350539Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:47.907376788Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:48.907941335Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:49.909001447Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:50.910419841Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:51.911554287Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:52.912511137Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:53.913476128Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:54.914479636Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:55.915864146Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:56.917071722Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:57.917943641Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:58.919027487Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:48:59.919482296Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:00.920284034Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:01.921502459Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:02.922862771Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:03.923879503Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:04.924524183Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:05.925663119Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:06.926410788Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:07.927051534Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:08.928251432Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:09.929179346Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:10.930525984Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:11.931889299Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:12.933254965Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:13.934407331Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:14.935028189Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:15.935445132Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:16.935982614Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:17.937136491Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:18.938383758Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:19.939214213Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:20.939985439Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:21.941210529Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:22.941915601Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:23.943272745Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:24.944620709Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:25.945974083Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:26.946515082Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:27.946867073Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:28.948130967Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:29.949288506Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:30.950769953Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:31.952009822Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:32.952528178Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:33.953166367Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:34.954117507Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:35.954804681Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:36.955646239Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:37.956296958Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:38.957201506Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:39.958535198Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:40.959911173Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:41.961197075Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:42.962178439Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:43.962581608Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:44.963542129Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:45.96429308Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:46.964768867Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:47.965595392Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:48.966809006Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:49.967866477Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:50.968431113Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:51.969312607Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:52.970455008Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:53.971820069Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:54.972400701Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:55.973280798Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:56.974153647Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:57.97516467Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:58.976064844Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:49:59.977216956Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:00.978583912Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:01.986969321Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:02.98774696Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:03.989277531Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:04.990460086Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:05.991567249Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:06.992574714Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:07.993907396Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:08.994302875Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:09.99553635Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:10.996808698Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:11.997817583Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:12.999071666Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:14.000146127Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:15.00068408Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:16.002173167Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:17.003502582Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:18.004019855Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:19.005046432Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:20.005426062Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:21.006428567Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:22.007212913Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:23.008265323Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:24.009087952Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:25.00991926Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:26.011023537Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:27.011853873Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:28.013182877Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:29.014413386Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:30.01617723Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:31.0173456Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:32.018097374Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:33.018762387Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:34.019499983Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:35.020430106Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:36.021669443Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:37.022581229Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:38.023573164Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:39.02456111Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:40.025945727Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:41.027142766Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:42.02788749Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: NOGROUP No such key 'waf:v1:events:attacks' or consumer group 'config-service' in XREADGROUP with GROUP option","service":"config-service"}
{"time":"2026-05-16T20:50:42.74457131Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-16T20:50:51.415842227Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-16T20:50:51.572738947Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-16T20:50:51.573337892Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-16T20:50:51.605769949Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-16T20:50:51.60580994Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-16T20:50:51.605824426Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-16T20:50:51.605836693Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-16T20:50:51.605849763Z","level":"INFO","msg":"snapshot scheduler started","dir":"/var/lib/waf/snapshots","service":"config-service"}
{"time":"2026-05-16T20:50:51.605911022Z","level":"ERROR","msg":"snapshot: mkdir failed","dir":"/var/lib/waf/snapshots","error":"mkdir /var/lib/waf: permission denied","service":"config-service"}
{"time":"2026-05-16T20:50:51.605924948Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-16T20:50:51.606319437Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-16T20:50:51.607140011Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-16T20:50:51.609126079Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-16T20:50:51.610098133Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
{"time":"2026-05-16T20:59:32.586402378Z","level":"ERROR","msg":"read stream","error":"xreadgroup waf:v1:events:attacks: context canceled","service":"config-service"}
{"time":"2026-05-16T20:59:32.586448836Z","level":"ERROR","msg":"livefeed: read stream","error":"xread waf:v1:events:stream: context canceled","service":"config-service"}
{"time":"2026-05-16T20:59:32.586495823Z","level":"INFO","msg":"config-service stopped","service":"config-service"}
{"time":"2026-05-16T20:59:32.745096933Z","level":"INFO","msg":"connected to postgres","service":"config-service"}
{"time":"2026-05-16T20:59:32.798991754Z","level":"INFO","msg":"migrations complete","service":"config-service"}
{"time":"2026-05-16T20:59:32.79910247Z","level":"INFO","msg":"connected to redis","service":"config-service"}
{"time":"2026-05-16T20:59:32.843623712Z","level":"INFO","msg":"initial redis sync complete","service":"config-service"}
{"time":"2026-05-16T20:59:32.843668308Z","level":"INFO","msg":"outbox worker started","service":"config-service"}
{"time":"2026-05-16T20:59:32.843682469Z","level":"INFO","msg":"attack events worker started","service":"config-service"}
{"time":"2026-05-16T20:59:32.843694221Z","level":"INFO","msg":"live feed hub started","service":"config-service"}
{"time":"2026-05-16T20:59:32.843706471Z","level":"INFO","msg":"snapshot scheduler started","dir":"/var/lib/waf/snapshots","service":"config-service"}
{"time":"2026-05-16T20:59:32.844052815Z","level":"INFO","msg":"attack events worker started","stream":"waf:v1:events:attacks","group":"config-service","consumer":"waf-hackathon-waf-api","service":"config-service"}
{"time":"2026-05-16T20:59:32.844560458Z","level":"INFO","msg":"bootstrap admin: user already exists — password preserved","username":"admin","service":"config-service"}
{"time":"2026-05-16T20:59:32.845393467Z","level":"INFO","msg":"live feed hub started","stream":"waf:v1:events:stream","service":"config-service"}
{"time":"2026-05-16T20:59:32.845777724Z","level":"ERROR","msg":"snapshot: mkdir failed","dir":"/var/lib/waf/snapshots","error":"mkdir /var/lib/waf: permission denied","service":"config-service"}
{"time":"2026-05-16T20:59:32.846166057Z","level":"INFO","msg":"config-service started","service":"config-service"}
{"time":"2026-05-16T20:59:32.846210802Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8081","service":"config-service"}
